Merge branch 'jetty-9.1' of ssh://git.eclipse.org/gitroot/jetty/org.eclipse.jetty.project into jetty-9.1

This commit is contained in:
Joakim Erdfelt 2013-11-04 15:00:17 -07:00
commit 4bd1a041f7
438 changed files with 1669 additions and 1331 deletions

View File

@ -1,3 +1,98 @@
jetty-9.1.0.RC1 - 31 October 2013
+ 294531 Unpacking webapp twice to the same directory name causes problems
with updated jars in WEB-INF/lib
+ 397049 Cannot Provide Custom Credential to JDBCLoginService
+ 403591 improve the Blocking Q implementation.
+ 407716 fixed logs
+ 410840 Change SSLSession.getPeerCertificateChain() to
SSLSession.getPeerCertificates().
+ 415118 WebAppClassLoader.getResource(name) should strip .class from name
+ 415609 spdy replace SessionInvoker with IteratingCallback. Introduce Flusher
class to separate queuing/flushing logic from StandardSession
+ 416300 Order ServletContainerInitializer callbacks
+ 416597 Allow classes and jars on the webappcontext extraclasspath to be
scanned for annotations by jetty-maven-plugin
+ 417356 Add SOCKS support to jetty client.
+ 417932 resources.mod should make ${jetty.base}/resources/ directory
+ 417933 logging.mod ini template should include commented log.class settings
+ 418212 org.eclipse.jetty.spdy.server.http.SSLExternalServerTest hangs.
+ 418441 Use of OPTIONS= in Jetty 9.1 should display WARNING message
+ 418596 Faults in JARs during class scanning should report the jar that
caused the problem
+ 418603 cannot specify a custom ServerEndpointConfig.Configurator
+ 418625 WebSocket / Jsr RemoteEndpoint.sendObject(java.nio.HeapByteBuffer)
doesn't find encoder
+ 418632 WebSocket / Jsr annotated @OnMessage with InputStream fails to be
called
+ 418636 Name anonymous filter and holders with classname-hashcode
+ 418732 Add whiteListByPath mode to IPAccessHandler
+ 418767 run-forked goal ingores test scope dependencies with
useTestScope=true
+ 418792 Session getProtocolVersion always returns null
+ 418892 SSL session caching so unreliable it effectively does not work.
+ 418922 Missing parameterization of etc/jetty-xinetd.xml
+ 418923 Missing parameterization of etc/jetty-proxy.xml
+ 419146 Parameterize etc/jetty-requestlog.xml values
+ 419309 Added symlink checker to test webapp
+ 419330 Allow access to setters on jetty-jspc-maven-plugin
+ 419333 treat // as an alias in path
+ 419344 NPNServerConnection does not close the EndPoint if it reads -1.
+ 419350 Do not borrow space from passed arrays
+ 419655 AnnotationParser throws NullPointerException when scanning files from
jar:file urls
+ 419687 HttpClient's query parameters must be case sensitive.
+ 419799 Async timeout dispatches to error page
+ 419814 Annotation properties maxMessageSize and inputBufferSize don't work
+ 419846 JDBCSessionManager doesn't determine dirty state correctly
+ 419899 Do not wrap SSL Exception as EoFException
+ 419901 Client always adds extra user-agent header.
+ 419904 Data corruption on proxy PUT requests.
+ 419914 QueuedThreadPool uses nanoTime
+ 419937 Request isSecure cleared on recycle
+ 419950 Provide constructor for StringContentProvider that takes Charset.
+ 419964 InputStreamContentProvider does not close provided InputStream.
+ 420012 Improve ProxyServlet.Transparent configuration in case prefix="/".
+ 420033 AsyncContext.onTimeout exceptions passed to onError
+ 420034 Removed threads/timers from Date caching
+ 420039 BufferingResponseListener continues processing after aborting
request.
+ 420048 DefaultServlet alias checks configured resourceBase
+ 420103 Split out jmx-remote module from existing jmx module
+ 420142 reimplemented graceful shutdown
+ 420362 Response/request listeners called too many times.
+ 420364 Bad synchronization in HttpConversation.
+ 420374 Call super.close() in a finally block
+ 420530 AbstractLoginModule never fails a login
+ 420687 XML errors in jetty-plus/src/test/resources/web-fragment-*.xml
+ 420776 complete error pages after startAsync
jetty-9.1.0.RC0 - 30 September 2013
+ 412469 make module for jetty-jaspi
+ 416453 Add comments to embedded SplitFileServer example
+ 416577 enhanced shutdown handler to send shutdown at startup
+ 416674 run all jetty-ant tests on random ports
+ 416940 avoid download of spring-beans.dtd
+ 417152 WebSocket / Do all setup in websocket specific
ServletContainerInitializer
+ 417239 re-implemented Request.getContentRead()
+ 417284 Precompiled regex in HttpField
+ 417289 SPDY replace use of direct buffers with indirect buffers or make it
configurable
+ 417340 Upgrade JDT compiler to one that supports source/target of Java 1.7
+ 417382 Upgrade to asm 4.1 and refactor annotation parsing
+ 417475 Do not null context Trie during dynamic deploy
+ 417490 WebSocket / @PathParam annotated parameters are null when the servlet
mapping uses a wildcard
+ 417561 Refactor annotation related code: change log messages
+ 417574 Setting options with _JAVA_OPTIONS breaks run-forked with
<waitForChild>true</waitForChild>
+ 417831 Remove jetty-logging.properties from distro/resources
+ 417938 Startup / Sort properties presented in --list-config alphabetically
+ 418014 Handle NTFS canonical exceptions during alias check
+ 418068 WebSocketClient has lazy or injected Executor
+ 418212 org.eclipse.jetty.spdy.server.http.SSLExternalServerTest hangs
+ 418227 Null cookie value test
jetty-9.1.0.M0 - 16 September 2013 jetty-9.1.0.M0 - 16 September 2013
+ 393473 Add support for JSR-356 (javax.websocket) draft + 393473 Add support for JSR-356 (javax.websocket) draft
+ 395444 Websockets not working with Chrome (deflate problem) + 395444 Websockets not working with Chrome (deflate problem)
@ -163,53 +258,10 @@ jetty-9.1.0.M0 - 16 September 2013
ServerEndpointConfig.Configurator.getNegotiatedExtensions() is never used ServerEndpointConfig.Configurator.getNegotiatedExtensions() is never used
+ 417225 added Container.addEventListener method + 417225 added Container.addEventListener method
+ 417260 Protected targets matched as true URI path segments + 417260 Protected targets matched as true URI path segments
jetty-9.0.6.v20130930 - 30 September 2013 jetty-9.0.6.v20130930 - 30 September 2013
+ 411069 better set compiler defaults to 1.7, including webdefault.xml for jsp
+ 411934 War overlay configuration assumes src/main/webapp exists
+ 413484 setAttribute in nosql session management better handles _dirty status
+ 413684 deprecated unsafe alias checkers
+ 413737 hide stacktrace in ReferrerPushStrategyTest
+ 414431 Avoid debug NPE race
+ 414898 Only upgrade v0 to v1 cookies on dquote , ; backslash space and tab
in the value
+ 415192 <jsp-file> maps to JspPropertyGroupServlet instead of JspServlet
+ 415194 Deployer gives management of context to context collection
+ 415302
+ 415330 Avoid multiple callbacks at EOF
+ 415401 Add initalizeDefaults call to SpringConfigurationProcessor
+ 415548 migrate ProxyHTTPToSPDYTest to use HttpClient to avoid intermittent
NPE part 2
+ 415605 fix status code logging for async requests
+ 415999 Fix some of FindBugs warnings
+ 416015 Handle null Accept-Language and other headers
+ 416096 DefaultServlet leaves open file descriptors with file sizes greater
than response buffer
+ 416102 Clean up of async sendContent process
+ 416103 Added AllowSymLinkAliasChecker.java
+ 416251 ProxyHTTPToSPDYConnection now sends a 502 to the client if it
receives a rst frame from the upstream spdy server
+ 416266 HttpServletResponse.encodeURL() encodes on first request when only
SessionTrackingMode.COOKIE is used
+ 416314 jetty async client wrong behaviour for HEAD Method + Redirect.
+ 416321 handle failure during blocked committing write
+ 416453 Add comments to embedded SplitFileServer example + 416453 Add comments to embedded SplitFileServer example
+ 416477 Improved consumeAll error handling
+ 416568 Simplified servlet exception logging
+ 416577 enhanced shutdown handler to send shutdown at startup + 416577 enhanced shutdown handler to send shutdown at startup
+ 416585 WebInfConfiguration examines webapp classloader first instead of its
parent when looking for container jars
+ 416597 Allow classes and jars on the webappcontext extraclasspath to be
scanned for annotations
+ 416663 Content-length set by resourcehandler
+ 416674 run all jetty-ant tests on random ports
+ 416679 Change warning to debug if no transaction manager present
+ 416787 StringIndexOutOfBounds with a pathMap of ""
+ 416940 avoid download of spring-beans.dtd + 416940 avoid download of spring-beans.dtd
+ 416990 JMX names statically unique
+ 417110 Demo / html body end tag missing in authfail.html
+ 417225 added Container.addEventListener method
+ 417260 Protected targets matched as true URI path segments
+ 417289 SPDY replace use of direct buffers with indirect buffers or make it + 417289 SPDY replace use of direct buffers with indirect buffers or make it
configurable configurable
+ 417475 Do not null context Trie during dynamic deploy + 417475 Do not null context Trie during dynamic deploy

View File

@ -25,6 +25,7 @@ import java.util.Map;
import java.util.Queue; import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import javax.servlet.AsyncContext; import javax.servlet.AsyncContext;
import javax.servlet.ServletConfig; import javax.servlet.ServletConfig;
import javax.servlet.ServletException; import javax.servlet.ServletException;

View File

@ -16,12 +16,14 @@
// ======================================================================== // ========================================================================
// //
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.AbstractHandler; import org.eclipse.jetty.server.handler.AbstractHandler;
public class HelloWorld extends AbstractHandler public class HelloWorld extends AbstractHandler

View File

@ -25,6 +25,7 @@ import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.server.handler.DefaultHandler;
import org.eclipse.jetty.server.handler.HandlerCollection; import org.eclipse.jetty.server.handler.HandlerCollection;
import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.util.thread.QueuedThreadPool;
public class ExampleServer public class ExampleServer
{ {
@ -44,7 +45,6 @@ public class ExampleServer
handlers.setHandlers(new Handler[]{context,new DefaultHandler()}); handlers.setHandlers(new Handler[]{context,new DefaultHandler()});
server.setHandler(handlers); server.setHandler(handlers);
server.start(); server.start();
server.join(); server.join();
} }

View File

@ -21,6 +21,7 @@ package org.eclipse.jetty.embedded;
import java.util.Properties; import java.util.Properties;
import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.webapp.WebAppContext; import org.eclipse.jetty.webapp.WebAppContext;

View File

@ -24,8 +24,8 @@ import org.eclipse.jetty.deploy.DeploymentManager;
import org.eclipse.jetty.deploy.providers.WebAppProvider; import org.eclipse.jetty.deploy.providers.WebAppProvider;
import org.eclipse.jetty.jmx.MBeanContainer; import org.eclipse.jetty.jmx.MBeanContainer;
import org.eclipse.jetty.security.HashLoginService; import org.eclipse.jetty.security.HashLoginService;
import org.eclipse.jetty.server.ForwardedRequestCustomizer;
import org.eclipse.jetty.server.AsyncNCSARequestLog; import org.eclipse.jetty.server.AsyncNCSARequestLog;
import org.eclipse.jetty.server.ForwardedRequestCustomizer;
import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.HttpConfiguration; import org.eclipse.jetty.server.HttpConfiguration;
import org.eclipse.jetty.server.HttpConnectionFactory; import org.eclipse.jetty.server.HttpConnectionFactory;

View File

@ -24,17 +24,11 @@ import java.io.InputStream;
import java.net.URI; import java.net.URI;
import java.net.URL; import java.net.URL;
import java.net.URLClassLoader; import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.jar.JarEntry; import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.jar.JarInputStream; import java.util.jar.JarInputStream;
import org.eclipse.jetty.util.ConcurrentHashSet; import org.eclipse.jetty.util.ConcurrentHashSet;

View File

@ -18,15 +18,11 @@
package org.eclipse.jetty.annotations; package org.eclipse.jetty.annotations;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import org.eclipse.jetty.annotations.AnnotationParser.AbstractHandler; import org.eclipse.jetty.annotations.AnnotationParser.AbstractHandler;
import org.eclipse.jetty.annotations.AnnotationParser.ClassInfo; import org.eclipse.jetty.annotations.AnnotationParser.ClassInfo;
import org.eclipse.jetty.util.ConcurrentHashSet; import org.eclipse.jetty.util.ConcurrentHashSet;
import org.eclipse.jetty.util.MultiMap;
import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.util.log.Logger;

View File

@ -18,8 +18,6 @@
package org.eclipse.jetty.annotations; package org.eclipse.jetty.annotations;
import java.util.List;
import javax.servlet.Servlet; import javax.servlet.Servlet;
import org.eclipse.jetty.annotations.AnnotationIntrospector.AbstractIntrospectableAnnotationHandler; import org.eclipse.jetty.annotations.AnnotationIntrospector.AbstractIntrospectableAnnotationHandler;

View File

@ -26,7 +26,6 @@ import static org.junit.Assert.assertTrue;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import javax.naming.Context; import javax.naming.Context;
@ -37,7 +36,6 @@ import org.eclipse.jetty.annotations.AnnotationParser.ClassInfo;
import org.eclipse.jetty.annotations.AnnotationParser.FieldInfo; import org.eclipse.jetty.annotations.AnnotationParser.FieldInfo;
import org.eclipse.jetty.annotations.AnnotationParser.MethodInfo; import org.eclipse.jetty.annotations.AnnotationParser.MethodInfo;
import org.eclipse.jetty.util.ConcurrentHashSet; import org.eclipse.jetty.util.ConcurrentHashSet;
import org.eclipse.jetty.util.MultiMap;
import org.junit.After; import org.junit.After;
import org.junit.Test; import org.junit.Test;

View File

@ -22,8 +22,6 @@ package org.eclipse.jetty.ant;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.lang.reflect.Array;
import java.net.URI;
import java.net.URL; import java.net.URL;
import java.net.URLClassLoader; import java.net.URLClassLoader;
import java.security.CodeSource; import java.security.CodeSource;
@ -50,7 +48,6 @@ import org.eclipse.jetty.ant.types.FileMatchingConfiguration;
import org.eclipse.jetty.ant.utils.TaskLog; import org.eclipse.jetty.ant.utils.TaskLog;
import org.eclipse.jetty.plus.webapp.EnvConfiguration; import org.eclipse.jetty.plus.webapp.EnvConfiguration;
import org.eclipse.jetty.plus.webapp.PlusConfiguration; import org.eclipse.jetty.plus.webapp.PlusConfiguration;
import org.eclipse.jetty.server.handler.ContextHandler;
import org.eclipse.jetty.servlet.FilterHolder; import org.eclipse.jetty.servlet.FilterHolder;
import org.eclipse.jetty.servlet.FilterMapping; import org.eclipse.jetty.servlet.FilterMapping;
import org.eclipse.jetty.servlet.Holder; import org.eclipse.jetty.servlet.Holder;

View File

@ -18,15 +18,15 @@
package org.eclipse.jetty.ant; package org.eclipse.jetty.ant;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.URI; import java.net.URI;
import org.eclipse.jetty.toolchain.test.MavenTestingUtils; import org.eclipse.jetty.toolchain.test.MavenTestingUtils;
import org.junit.Test; import org.junit.Test;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
public class JettyAntTaskTest public class JettyAntTaskTest
{ {

View File

@ -19,6 +19,7 @@
package org.eclipse.jetty.client; package org.eclipse.jetty.client;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.nio.charset.UnsupportedCharsetException; import java.nio.charset.UnsupportedCharsetException;
import java.util.List; import java.util.List;
@ -92,15 +93,22 @@ public class HttpContentResponse implements ContentResponse
public String getContentAsString() public String getContentAsString()
{ {
String encoding = this.encoding; String encoding = this.encoding;
if (encoding == null)
{
return new String(getContent(), StandardCharsets.UTF_8);
}
else
{
try try
{ {
return new String(getContent(), encoding == null ? "UTF-8" : encoding); return new String(getContent(), encoding);
} }
catch (UnsupportedEncodingException e) catch (UnsupportedEncodingException e)
{ {
throw new UnsupportedCharsetException(encoding); throw new UnsupportedCharsetException(encoding);
} }
} }
}
@Override @Override
public String toString() public String toString()

View File

@ -19,6 +19,7 @@
package org.eclipse.jetty.client.util; package org.eclipse.jetty.client.util;
import java.net.URI; import java.net.URI;
import java.nio.charset.StandardCharsets;
import org.eclipse.jetty.client.HttpClient; import org.eclipse.jetty.client.HttpClient;
import org.eclipse.jetty.client.api.Authentication; import org.eclipse.jetty.client.api.Authentication;
@ -28,7 +29,6 @@ import org.eclipse.jetty.client.api.Request;
import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.HttpHeader;
import org.eclipse.jetty.util.Attributes; import org.eclipse.jetty.util.Attributes;
import org.eclipse.jetty.util.B64Code; import org.eclipse.jetty.util.B64Code;
import org.eclipse.jetty.util.StringUtil;
/** /**
* Implementation of the HTTP "Basic" authentication defined in RFC 2617. * Implementation of the HTTP "Basic" authentication defined in RFC 2617.
@ -73,8 +73,7 @@ public class BasicAuthentication implements Authentication
@Override @Override
public Result authenticate(Request request, ContentResponse response, HeaderInfo headerInfo, Attributes context) public Result authenticate(Request request, ContentResponse response, HeaderInfo headerInfo, Attributes context)
{ {
String encoding = StringUtil.__ISO_8859_1; String value = "Basic " + B64Code.encode(user + ":" + password, StandardCharsets.ISO_8859_1);
String value = "Basic " + B64Code.encode(user + ":" + password, encoding);
return new BasicResult(headerInfo.getHeader(), uri, value); return new BasicResult(headerInfo.getHeader(), uri, value);
} }

View File

@ -20,6 +20,8 @@ package org.eclipse.jetty.client.util;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.charset.UnsupportedCharsetException; import java.nio.charset.UnsupportedCharsetException;
import java.util.Locale; import java.util.Locale;
@ -131,7 +133,7 @@ public abstract class BufferingResponseListener extends Listener.Adapter
{ {
String encoding = this.encoding; String encoding = this.encoding;
if (encoding == null) if (encoding == null)
encoding = "UTF-8"; return getContentAsString(StandardCharsets.UTF_8);
return getContentAsString(encoding); return getContentAsString(encoding);
} }
@ -151,4 +153,14 @@ public abstract class BufferingResponseListener extends Listener.Adapter
throw new UnsupportedCharsetException(encoding); throw new UnsupportedCharsetException(encoding);
} }
} }
/**
* @param encoding the encoding of the content bytes
* @return the content as a string, with the specified encoding
* @see #getContentAsString()
*/
public String getContentAsString(Charset encoding)
{
return new String(getContent(), encoding);
}
} }

View File

@ -19,7 +19,6 @@
package org.eclipse.jetty.client.util; package org.eclipse.jetty.client.util;
import java.net.URI; import java.net.URI;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
@ -218,14 +217,13 @@ public class DigestAuthentication implements Authentication
if (digester == null) if (digester == null)
return; return;
Charset charset = StandardCharsets.ISO_8859_1;
String A1 = user + ":" + realm + ":" + password; String A1 = user + ":" + realm + ":" + password;
String hashA1 = toHexString(digester.digest(A1.getBytes(charset))); String hashA1 = toHexString(digester.digest(A1.getBytes(StandardCharsets.ISO_8859_1)));
String A2 = request.getMethod() + ":" + request.getURI(); String A2 = request.getMethod() + ":" + request.getURI();
if ("auth-int".equals(qop)) if ("auth-int".equals(qop))
A2 += ":" + toHexString(digester.digest(content)); A2 += ":" + toHexString(digester.digest(content));
String hashA2 = toHexString(digester.digest(A2.getBytes(charset))); String hashA2 = toHexString(digester.digest(A2.getBytes(StandardCharsets.ISO_8859_1)));
String nonceCount; String nonceCount;
String clientNonce; String clientNonce;
@ -242,7 +240,7 @@ public class DigestAuthentication implements Authentication
clientNonce = null; clientNonce = null;
A3 = hashA1 + ":" + nonce + ":" + hashA2; A3 = hashA1 + ":" + nonce + ":" + hashA2;
} }
String hashA3 = toHexString(digester.digest(A3.getBytes(charset))); String hashA3 = toHexString(digester.digest(A3.getBytes(StandardCharsets.ISO_8859_1)));
StringBuilder value = new StringBuilder("Digest"); StringBuilder value = new StringBuilder("Digest");
value.append(" username=\"").append(user).append("\""); value.append(" username=\"").append(user).append("\"");

View File

@ -19,6 +19,7 @@
package org.eclipse.jetty.client.util; package org.eclipse.jetty.client.util;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import org.eclipse.jetty.client.api.ContentProvider; import org.eclipse.jetty.client.api.ContentProvider;
@ -32,7 +33,7 @@ public class StringContentProvider extends BytesContentProvider
{ {
public StringContentProvider(String content) public StringContentProvider(String content)
{ {
this(content, "UTF-8"); this(content, StandardCharsets.UTF_8);
} }
public StringContentProvider(String content, String encoding) public StringContentProvider(String content, String encoding)

View File

@ -25,7 +25,7 @@ import static org.junit.Assert.assertTrue;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.charset.Charset; import java.nio.charset.StandardCharsets;
import java.util.zip.GZIPInputStream; import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream; import java.util.zip.GZIPOutputStream;
@ -59,7 +59,7 @@ public class GZIPContentDecoderTest
data += data; data += data;
ByteArrayOutputStream baos = new ByteArrayOutputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream output = new GZIPOutputStream(baos); GZIPOutputStream output = new GZIPOutputStream(baos);
output.write(data.getBytes("UTF-8")); output.write(data.getBytes(StandardCharsets.UTF_8));
output.close(); output.close();
byte[] bytes = baos.toByteArray(); byte[] bytes = baos.toByteArray();
@ -68,7 +68,7 @@ public class GZIPContentDecoderTest
int read; int read;
while ((read = input.read()) >= 0) while ((read = input.read()) >= 0)
baos.write(read); baos.write(read);
assertEquals(data, new String(baos.toByteArray(), "UTF-8")); assertEquals(data, new String(baos.toByteArray(), StandardCharsets.UTF_8));
} }
@Test @Test
@ -91,13 +91,13 @@ public class GZIPContentDecoderTest
ByteArrayOutputStream baos = new ByteArrayOutputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream output = new GZIPOutputStream(baos); GZIPOutputStream output = new GZIPOutputStream(baos);
output.write(data.getBytes("UTF-8")); output.write(data.getBytes(StandardCharsets.UTF_8));
output.close(); output.close();
byte[] bytes = baos.toByteArray(); byte[] bytes = baos.toByteArray();
GZIPContentDecoder decoder = new GZIPContentDecoder(); GZIPContentDecoder decoder = new GZIPContentDecoder();
ByteBuffer decoded = decoder.decode(ByteBuffer.wrap(bytes)); ByteBuffer decoded = decoder.decode(ByteBuffer.wrap(bytes));
assertEquals(data, Charset.forName("UTF-8").decode(decoded).toString()); assertEquals(data, StandardCharsets.UTF_8.decode(decoded).toString());
} }
@Test @Test
@ -107,7 +107,7 @@ public class GZIPContentDecoderTest
ByteArrayOutputStream baos = new ByteArrayOutputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream output = new GZIPOutputStream(baos); GZIPOutputStream output = new GZIPOutputStream(baos);
output.write(data.getBytes("UTF-8")); output.write(data.getBytes(StandardCharsets.UTF_8));
output.close(); output.close();
byte[] bytes = baos.toByteArray(); byte[] bytes = baos.toByteArray();
@ -121,7 +121,7 @@ public class GZIPContentDecoderTest
ByteBuffer decoded = decoder.decode(ByteBuffer.wrap(bytes1)); ByteBuffer decoded = decoder.decode(ByteBuffer.wrap(bytes1));
assertEquals(0, decoded.capacity()); assertEquals(0, decoded.capacity());
decoded = decoder.decode(ByteBuffer.wrap(bytes2)); decoded = decoder.decode(ByteBuffer.wrap(bytes2));
assertEquals(data, Charset.forName("UTF-8").decode(decoded).toString()); assertEquals(data, StandardCharsets.UTF_8.decode(decoded).toString());
} }
@Test @Test
@ -131,7 +131,7 @@ public class GZIPContentDecoderTest
ByteArrayOutputStream baos = new ByteArrayOutputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream output = new GZIPOutputStream(baos); GZIPOutputStream output = new GZIPOutputStream(baos);
output.write(data.getBytes("UTF-8")); output.write(data.getBytes(StandardCharsets.UTF_8));
output.close(); output.close();
byte[] bytes = baos.toByteArray(); byte[] bytes = baos.toByteArray();
@ -143,7 +143,7 @@ public class GZIPContentDecoderTest
GZIPContentDecoder decoder = new GZIPContentDecoder(); GZIPContentDecoder decoder = new GZIPContentDecoder();
ByteBuffer decoded = decoder.decode(ByteBuffer.wrap(bytes1)); ByteBuffer decoded = decoder.decode(ByteBuffer.wrap(bytes1));
assertEquals(data, Charset.forName("UTF-8").decode(decoded).toString()); assertEquals(data, StandardCharsets.UTF_8.decode(decoded).toString());
assertFalse(decoder.isFinished()); assertFalse(decoder.isFinished());
decoded = decoder.decode(ByteBuffer.wrap(bytes2)); decoded = decoder.decode(ByteBuffer.wrap(bytes2));
assertEquals(0, decoded.remaining()); assertEquals(0, decoded.remaining());
@ -157,7 +157,7 @@ public class GZIPContentDecoderTest
ByteArrayOutputStream baos = new ByteArrayOutputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream output = new GZIPOutputStream(baos); GZIPOutputStream output = new GZIPOutputStream(baos);
output.write(data.getBytes("UTF-8")); output.write(data.getBytes(StandardCharsets.UTF_8));
output.close(); output.close();
byte[] bytes = baos.toByteArray(); byte[] bytes = baos.toByteArray();
@ -171,7 +171,7 @@ public class GZIPContentDecoderTest
ByteBuffer decoded = decoder.decode(ByteBuffer.wrap(bytes1)); ByteBuffer decoded = decoder.decode(ByteBuffer.wrap(bytes1));
assertEquals(0, decoded.capacity()); assertEquals(0, decoded.capacity());
decoded = decoder.decode(ByteBuffer.wrap(bytes2)); decoded = decoder.decode(ByteBuffer.wrap(bytes2));
assertEquals(data, Charset.forName("UTF-8").decode(decoded).toString()); assertEquals(data, StandardCharsets.UTF_8.decode(decoded).toString());
} }
@Test @Test
@ -180,14 +180,14 @@ public class GZIPContentDecoderTest
String data1 = "0"; String data1 = "0";
ByteArrayOutputStream baos = new ByteArrayOutputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream output = new GZIPOutputStream(baos); GZIPOutputStream output = new GZIPOutputStream(baos);
output.write(data1.getBytes("UTF-8")); output.write(data1.getBytes(StandardCharsets.UTF_8));
output.close(); output.close();
byte[] bytes1 = baos.toByteArray(); byte[] bytes1 = baos.toByteArray();
String data2 = "1"; String data2 = "1";
baos = new ByteArrayOutputStream(); baos = new ByteArrayOutputStream();
output = new GZIPOutputStream(baos); output = new GZIPOutputStream(baos);
output.write(data2.getBytes("UTF-8")); output.write(data2.getBytes(StandardCharsets.UTF_8));
output.close(); output.close();
byte[] bytes2 = baos.toByteArray(); byte[] bytes2 = baos.toByteArray();
@ -198,11 +198,11 @@ public class GZIPContentDecoderTest
GZIPContentDecoder decoder = new GZIPContentDecoder(); GZIPContentDecoder decoder = new GZIPContentDecoder();
ByteBuffer buffer = ByteBuffer.wrap(bytes); ByteBuffer buffer = ByteBuffer.wrap(bytes);
ByteBuffer decoded = decoder.decode(buffer); ByteBuffer decoded = decoder.decode(buffer);
assertEquals(data1, Charset.forName("UTF-8").decode(decoded).toString()); assertEquals(data1, StandardCharsets.UTF_8.decode(decoded).toString());
assertTrue(decoder.isFinished()); assertTrue(decoder.isFinished());
assertTrue(buffer.hasRemaining()); assertTrue(buffer.hasRemaining());
decoded = decoder.decode(buffer); decoded = decoder.decode(buffer);
assertEquals(data2, Charset.forName("UTF-8").decode(decoded).toString()); assertEquals(data2, StandardCharsets.UTF_8.decode(decoded).toString());
assertTrue(decoder.isFinished()); assertTrue(decoder.isFinished());
assertFalse(buffer.hasRemaining()); assertFalse(buffer.hasRemaining());
} }
@ -215,7 +215,7 @@ public class GZIPContentDecoderTest
data += data; data += data;
ByteArrayOutputStream baos = new ByteArrayOutputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream output = new GZIPOutputStream(baos); GZIPOutputStream output = new GZIPOutputStream(baos);
output.write(data.getBytes("UTF-8")); output.write(data.getBytes(StandardCharsets.UTF_8));
output.close(); output.close();
byte[] bytes = baos.toByteArray(); byte[] bytes = baos.toByteArray();
@ -225,7 +225,7 @@ public class GZIPContentDecoderTest
while (buffer.hasRemaining()) while (buffer.hasRemaining())
{ {
ByteBuffer decoded = decoder.decode(buffer); ByteBuffer decoded = decoder.decode(buffer);
result += Charset.forName("UTF-8").decode(decoded).toString(); result += StandardCharsets.UTF_8.decode(decoded).toString();
} }
assertEquals(data, result); assertEquals(data, result);
} }
@ -238,7 +238,7 @@ public class GZIPContentDecoderTest
data += data; data += data;
ByteArrayOutputStream baos = new ByteArrayOutputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream output = new GZIPOutputStream(baos); GZIPOutputStream output = new GZIPOutputStream(baos);
output.write(data.getBytes("UTF-8")); output.write(data.getBytes(StandardCharsets.UTF_8));
output.close(); output.close();
byte[] bytes = baos.toByteArray(); byte[] bytes = baos.toByteArray();
@ -249,7 +249,7 @@ public class GZIPContentDecoderTest
{ {
ByteBuffer decoded = decoder.decode(ByteBuffer.wrap(new byte[]{buffer.get()})); ByteBuffer decoded = decoder.decode(ByteBuffer.wrap(new byte[]{buffer.get()}));
if (decoded.hasRemaining()) if (decoded.hasRemaining())
result += Charset.forName("UTF-8").decode(decoded).toString(); result += StandardCharsets.UTF_8.decode(decoded).toString();
} }
assertEquals(data, result); assertEquals(data, result);
assertTrue(decoder.isFinished()); assertTrue(decoder.isFinished());
@ -263,12 +263,12 @@ public class GZIPContentDecoderTest
data1 += data1; data1 += data1;
ByteArrayOutputStream baos = new ByteArrayOutputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream output = new GZIPOutputStream(baos); GZIPOutputStream output = new GZIPOutputStream(baos);
output.write(data1.getBytes("UTF-8")); output.write(data1.getBytes(StandardCharsets.UTF_8));
output.close(); output.close();
byte[] bytes1 = baos.toByteArray(); byte[] bytes1 = baos.toByteArray();
String data2 = "HELLO"; String data2 = "HELLO";
byte[] bytes2 = data2.getBytes("UTF-8"); byte[] bytes2 = data2.getBytes(StandardCharsets.UTF_8);
byte[] bytes = new byte[bytes1.length + bytes2.length]; byte[] bytes = new byte[bytes1.length + bytes2.length];
System.arraycopy(bytes1, 0, bytes, 0, bytes1.length); System.arraycopy(bytes1, 0, bytes, 0, bytes1.length);
@ -281,12 +281,12 @@ public class GZIPContentDecoderTest
{ {
ByteBuffer decoded = decoder.decode(buffer); ByteBuffer decoded = decoder.decode(buffer);
if (decoded.hasRemaining()) if (decoded.hasRemaining())
result += Charset.forName("UTF-8").decode(decoded).toString(); result += StandardCharsets.UTF_8.decode(decoded).toString();
if (decoder.isFinished()) if (decoder.isFinished())
break; break;
} }
assertEquals(data1, result); assertEquals(data1, result);
assertTrue(buffer.hasRemaining()); assertTrue(buffer.hasRemaining());
assertEquals(data2, Charset.forName("UTF-8").decode(buffer).toString()); assertEquals(data2, StandardCharsets.UTF_8.decode(buffer).toString());
} }
} }

View File

@ -18,10 +18,15 @@
package org.eclipse.jetty.client; package org.eclipse.jetty.client;
import static junit.framework.Assert.fail;
import static org.hamcrest.Matchers.instanceOf;
import static org.junit.Assert.assertThat;
import java.io.IOException; import java.io.IOException;
import java.nio.channels.ClosedChannelException; import java.nio.channels.ClosedChannelException;
import java.security.cert.CertificateException; import java.security.cert.CertificateException;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import javax.net.ssl.SSLHandshakeException; import javax.net.ssl.SSLHandshakeException;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@ -38,10 +43,6 @@ import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import static junit.framework.Assert.fail;
import static org.hamcrest.Matchers.instanceOf;
import static org.junit.Assert.assertThat;
/** /**
* This test class runs tests to make sure that hostname verification (http://www.ietf.org/rfc/rfc2818.txt * This test class runs tests to make sure that hostname verification (http://www.ietf.org/rfc/rfc2818.txt
* section 3.1) is configurable in SslContextFactory and works as expected. * section 3.1) is configurable in SslContextFactory and works as expected.

View File

@ -25,6 +25,7 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;

View File

@ -21,10 +21,12 @@ package org.eclipse.jetty.client;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.ServletInputStream; import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@ -60,13 +62,13 @@ public class HttpClientContinueTest extends AbstractHttpClientServerTest
@Test @Test
public void test_Expect100Continue_WithOneContent_Respond100Continue() throws Exception public void test_Expect100Continue_WithOneContent_Respond100Continue() throws Exception
{ {
test_Expect100Continue_Respond100Continue("data1".getBytes("UTF-8")); test_Expect100Continue_Respond100Continue("data1".getBytes(StandardCharsets.UTF_8));
} }
@Test @Test
public void test_Expect100Continue_WithMultipleContents_Respond100Continue() throws Exception public void test_Expect100Continue_WithMultipleContents_Respond100Continue() throws Exception
{ {
test_Expect100Continue_Respond100Continue("data1".getBytes("UTF-8"), "data2".getBytes("UTF-8"), "data3".getBytes("UTF-8")); test_Expect100Continue_Respond100Continue("data1".getBytes(StandardCharsets.UTF_8), "data2".getBytes(StandardCharsets.UTF_8), "data3".getBytes(StandardCharsets.UTF_8));
} }
private void test_Expect100Continue_Respond100Continue(byte[]... contents) throws Exception private void test_Expect100Continue_Respond100Continue(byte[]... contents) throws Exception

View File

@ -24,6 +24,7 @@ import java.nio.ByteBuffer;
import java.util.Map; import java.util.Map;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;

View File

@ -28,6 +28,7 @@ import java.util.Random;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;

View File

@ -20,8 +20,10 @@ package org.eclipse.jetty.client;
import java.io.IOException; import java.io.IOException;
import java.net.URI; import java.net.URI;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@ -82,7 +84,7 @@ public class HttpClientProxyTest extends AbstractHttpClientServerTest
{ {
final String user = "foo"; final String user = "foo";
final String password = "bar"; final String password = "bar";
final String credentials = B64Code.encode(user + ":" + password, "ISO-8859-1"); final String credentials = B64Code.encode(user + ":" + password, StandardCharsets.ISO_8859_1);
final String serverHost = "server"; final String serverHost = "server";
final String realm = "test_realm"; final String realm = "test_realm";
final int status = HttpStatus.NO_CONTENT_204; final int status = HttpStatus.NO_CONTENT_204;

View File

@ -26,6 +26,7 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;

View File

@ -18,6 +18,10 @@
package org.eclipse.jetty.client; package org.eclipse.jetty.client;
import static java.nio.file.StandardOpenOption.CREATE;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
@ -37,6 +41,7 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@ -61,10 +66,6 @@ import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import static java.nio.file.StandardOpenOption.CREATE;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
public class HttpClientStreamTest extends AbstractHttpClientServerTest public class HttpClientStreamTest extends AbstractHttpClientServerTest
{ {
public HttpClientStreamTest(SslContextFactory sslContextFactory) public HttpClientStreamTest(SslContextFactory sslContextFactory)

View File

@ -18,6 +18,8 @@
package org.eclipse.jetty.client; package org.eclipse.jetty.client;
import static java.nio.file.StandardOpenOption.CREATE;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import java.net.HttpCookie; import java.net.HttpCookie;
@ -25,6 +27,7 @@ import java.net.URI;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.channels.UnresolvedAddressException; import java.nio.channels.UnresolvedAddressException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
@ -41,6 +44,7 @@ import java.util.concurrent.TimeoutException;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicLong;
import java.util.zip.GZIPOutputStream; import java.util.zip.GZIPOutputStream;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@ -66,8 +70,6 @@ import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import static java.nio.file.StandardOpenOption.CREATE;
public class HttpClientTest extends AbstractHttpClientServerTest public class HttpClientTest extends AbstractHttpClientServerTest
{ {
public HttpClientTest(SslContextFactory sslContextFactory) public HttpClientTest(SslContextFactory sslContextFactory)
@ -174,10 +176,10 @@ public class HttpClientTest extends AbstractHttpClientServerTest
response.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8");
ServletOutputStream output = response.getOutputStream(); ServletOutputStream output = response.getOutputStream();
String paramValue1 = request.getParameter(paramName1); String paramValue1 = request.getParameter(paramName1);
output.write(paramValue1.getBytes("UTF-8")); output.write(paramValue1.getBytes(StandardCharsets.UTF_8));
String paramValue2 = request.getParameter(paramName2); String paramValue2 = request.getParameter(paramName2);
Assert.assertEquals("", paramValue2); Assert.assertEquals("", paramValue2);
output.write("empty".getBytes("UTF-8")); output.write("empty".getBytes(StandardCharsets.UTF_8));
baseRequest.setHandled(true); baseRequest.setHandled(true);
} }
}); });
@ -189,7 +191,7 @@ public class HttpClientTest extends AbstractHttpClientServerTest
Assert.assertNotNull(response); Assert.assertNotNull(response);
Assert.assertEquals(200, response.getStatus()); Assert.assertEquals(200, response.getStatus());
String content = new String(response.getContent(), "UTF-8"); String content = new String(response.getContent(), StandardCharsets.UTF_8);
Assert.assertEquals(value1 + "empty", content); Assert.assertEquals(value1 + "empty", content);
} }
@ -207,9 +209,9 @@ public class HttpClientTest extends AbstractHttpClientServerTest
ServletOutputStream output = response.getOutputStream(); ServletOutputStream output = response.getOutputStream();
String[] paramValues1 = request.getParameterValues(paramName1); String[] paramValues1 = request.getParameterValues(paramName1);
for (String paramValue : paramValues1) for (String paramValue : paramValues1)
output.write(paramValue.getBytes("UTF-8")); output.write(paramValue.getBytes(StandardCharsets.UTF_8));
String paramValue2 = request.getParameter(paramName2); String paramValue2 = request.getParameter(paramName2);
output.write(paramValue2.getBytes("UTF-8")); output.write(paramValue2.getBytes(StandardCharsets.UTF_8));
baseRequest.setHandled(true); baseRequest.setHandled(true);
} }
}); });
@ -225,7 +227,7 @@ public class HttpClientTest extends AbstractHttpClientServerTest
Assert.assertNotNull(response); Assert.assertNotNull(response);
Assert.assertEquals(200, response.getStatus()); Assert.assertEquals(200, response.getStatus());
String content = new String(response.getContent(), "UTF-8"); String content = new String(response.getContent(), StandardCharsets.UTF_8);
Assert.assertEquals(value11 + value12 + value2, content); Assert.assertEquals(value11 + value12 + value2, content);
} }
@ -257,7 +259,7 @@ public class HttpClientTest extends AbstractHttpClientServerTest
Assert.assertNotNull(response); Assert.assertNotNull(response);
Assert.assertEquals(200, response.getStatus()); Assert.assertEquals(200, response.getStatus());
Assert.assertEquals(paramValue, new String(response.getContent(), "UTF-8")); Assert.assertEquals(paramValue, new String(response.getContent(), StandardCharsets.UTF_8));
} }
@Test @Test
@ -289,7 +291,7 @@ public class HttpClientTest extends AbstractHttpClientServerTest
Assert.assertNotNull(response); Assert.assertNotNull(response);
Assert.assertEquals(200, response.getStatus()); Assert.assertEquals(200, response.getStatus());
Assert.assertEquals(paramValue, new String(response.getContent(), "UTF-8")); Assert.assertEquals(paramValue, new String(response.getContent(), StandardCharsets.UTF_8));
} }
@Test @Test

View File

@ -25,6 +25,7 @@ import java.util.concurrent.Executor;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException; import java.util.concurrent.TimeoutException;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
import javax.net.ssl.SSLEngine; import javax.net.ssl.SSLEngine;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;

View File

@ -21,6 +21,7 @@ package org.eclipse.jetty.client;
import java.io.IOException; import java.io.IOException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;

View File

@ -24,6 +24,7 @@ import java.util.Arrays;
import java.util.concurrent.BlockingQueue; import java.util.concurrent.BlockingQueue;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;

View File

@ -22,6 +22,7 @@ import java.io.IOException;
import java.net.HttpCookie; import java.net.HttpCookie;
import java.net.URI; import java.net.URI;
import java.util.List; import java.util.List;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.Cookie; import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;

View File

@ -102,7 +102,7 @@ public class HttpReceiverTest
// Assert.assertNotNull(headers); // Assert.assertNotNull(headers);
// Assert.assertEquals(1, headers.size()); // Assert.assertEquals(1, headers.size());
// Assert.assertEquals(String.valueOf(content.length()), headers.get(HttpHeader.CONTENT_LENGTH)); // Assert.assertEquals(String.valueOf(content.length()), headers.get(HttpHeader.CONTENT_LENGTH));
// String received = listener.getContentAsString("UTF-8"); // String received = listener.getContentAsString(StandardCharsets.UTF_8);
// Assert.assertEquals(content, received); // Assert.assertEquals(content, received);
// } // }
// //

View File

@ -25,6 +25,7 @@ import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;

View File

@ -172,7 +172,7 @@ public class HttpSenderTest
// HttpConnection connection = new HttpConnection(client, endPoint, destination); // HttpConnection connection = new HttpConnection(client, endPoint, destination);
// Request request = client.newRequest(URI.create("http://localhost/")); // Request request = client.newRequest(URI.create("http://localhost/"));
// String content = "abcdef"; // String content = "abcdef";
// request.content(new ByteBufferContentProvider(ByteBuffer.wrap(content.getBytes("UTF-8")))); // request.content(new ByteBufferContentProvider(ByteBuffer.wrap(content.getBytes(StandardCharsets.UTF_8))));
// final CountDownLatch headersLatch = new CountDownLatch(1); // final CountDownLatch headersLatch = new CountDownLatch(1);
// final CountDownLatch successLatch = new CountDownLatch(1); // final CountDownLatch successLatch = new CountDownLatch(1);
// request.listener(new Request.Listener.Adapter() // request.listener(new Request.Listener.Adapter()
@ -207,7 +207,7 @@ public class HttpSenderTest
// Request request = client.newRequest(URI.create("http://localhost/")); // Request request = client.newRequest(URI.create("http://localhost/"));
// String content1 = "0123456789"; // String content1 = "0123456789";
// String content2 = "abcdef"; // String content2 = "abcdef";
// request.content(new ByteBufferContentProvider(ByteBuffer.wrap(content1.getBytes("UTF-8")), ByteBuffer.wrap(content2.getBytes("UTF-8")))); // request.content(new ByteBufferContentProvider(ByteBuffer.wrap(content1.getBytes(StandardCharsets.UTF_8)), ByteBuffer.wrap(content2.getBytes(StandardCharsets.UTF_8))));
// final CountDownLatch headersLatch = new CountDownLatch(1); // final CountDownLatch headersLatch = new CountDownLatch(1);
// final CountDownLatch successLatch = new CountDownLatch(1); // final CountDownLatch successLatch = new CountDownLatch(1);
// request.listener(new Request.Listener.Adapter() // request.listener(new Request.Listener.Adapter()
@ -242,7 +242,7 @@ public class HttpSenderTest
// Request request = client.newRequest(URI.create("http://localhost/")); // Request request = client.newRequest(URI.create("http://localhost/"));
// String content1 = "0123456789"; // String content1 = "0123456789";
// String content2 = "ABCDEF"; // String content2 = "ABCDEF";
// request.content(new ByteBufferContentProvider(ByteBuffer.wrap(content1.getBytes("UTF-8")), ByteBuffer.wrap(content2.getBytes("UTF-8"))) // request.content(new ByteBufferContentProvider(ByteBuffer.wrap(content1.getBytes(StandardCharsets.UTF_8)), ByteBuffer.wrap(content2.getBytes(StandardCharsets.UTF_8)))
// { // {
// @Override // @Override
// public long getLength() // public long getLength()

View File

@ -24,6 +24,7 @@ import java.io.OutputStream;
import java.net.HttpCookie; import java.net.HttpCookie;
import java.net.URI; import java.net.URI;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -269,7 +270,7 @@ public class Usage
HttpClient client = new HttpClient(); HttpClient client = new HttpClient();
client.start(); client.start();
InputStream input = new ByteArrayInputStream("content".getBytes("UTF-8")); InputStream input = new ByteArrayInputStream("content".getBytes(StandardCharsets.UTF_8));
ContentResponse response = client.newRequest("localhost", 8080) ContentResponse response = client.newRequest("localhost", 8080)
// Provide the content as InputStream // Provide the content as InputStream

View File

@ -24,12 +24,14 @@ import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.OutputStream; import java.io.OutputStream;
import java.net.SocketTimeoutException; import java.net.SocketTimeoutException;
import java.nio.charset.StandardCharsets;
import java.util.Arrays; import java.util.Arrays;
import java.util.concurrent.Callable; import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.Future; import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import javax.net.ssl.SSLContext; import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLServerSocket; import javax.net.ssl.SSLServerSocket;
import javax.net.ssl.SSLSocket; import javax.net.ssl.SSLSocket;
@ -151,7 +153,7 @@ public class SslBytesClientTest extends SslBytesTest
SimpleProxy.AutomaticFlow automaticProxyFlow = proxy.startAutomaticFlow(); SimpleProxy.AutomaticFlow automaticProxyFlow = proxy.startAutomaticFlow();
// Read request // Read request
BufferedReader reader = new BufferedReader(new InputStreamReader(server.getInputStream(), "UTF-8")); BufferedReader reader = new BufferedReader(new InputStreamReader(server.getInputStream(), StandardCharsets.UTF_8));
String line = reader.readLine(); String line = reader.readLine();
Assert.assertTrue(line.startsWith("GET")); Assert.assertTrue(line.startsWith("GET"));
while (line.length() > 0) while (line.length() > 0)
@ -161,7 +163,7 @@ public class SslBytesClientTest extends SslBytesTest
OutputStream output = server.getOutputStream(); OutputStream output = server.getOutputStream();
output.write(("HTTP/1.1 200 OK\r\n" + output.write(("HTTP/1.1 200 OK\r\n" +
"Content-Length: 0\r\n" + "Content-Length: 0\r\n" +
"\r\n").getBytes("UTF-8")); "\r\n").getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
Assert.assertTrue(automaticProxyFlow.stop(5, TimeUnit.SECONDS)); Assert.assertTrue(automaticProxyFlow.stop(5, TimeUnit.SECONDS));
@ -197,7 +199,7 @@ public class SslBytesClientTest extends SslBytesTest
// Read request // Read request
InputStream serverInput = server.getInputStream(); InputStream serverInput = server.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(serverInput, "UTF-8")); BufferedReader reader = new BufferedReader(new InputStreamReader(serverInput, StandardCharsets.UTF_8));
String line = reader.readLine(); String line = reader.readLine();
Assert.assertTrue(line.startsWith("GET")); Assert.assertTrue(line.startsWith("GET"));
while (line.length() > 0) while (line.length() > 0)
@ -206,16 +208,16 @@ public class SslBytesClientTest extends SslBytesTest
OutputStream serverOutput = server.getOutputStream(); OutputStream serverOutput = server.getOutputStream();
byte[] data1 = new byte[1024]; byte[] data1 = new byte[1024];
Arrays.fill(data1, (byte)'X'); Arrays.fill(data1, (byte)'X');
String content1 = new String(data1, "UTF-8"); String content1 = new String(data1, StandardCharsets.UTF_8);
byte[] data2 = new byte[1024]; byte[] data2 = new byte[1024];
Arrays.fill(data2, (byte)'Y'); Arrays.fill(data2, (byte)'Y');
final String content2 = new String(data2, "UTF-8"); final String content2 = new String(data2, StandardCharsets.UTF_8);
// Write first part of the response // Write first part of the response
serverOutput.write(("HTTP/1.1 200 OK\r\n" + serverOutput.write(("HTTP/1.1 200 OK\r\n" +
"Content-Type: text/plain\r\n" + "Content-Type: text/plain\r\n" +
"Content-Length: " + (content1.length() + content2.length()) + "\r\n" + "Content-Length: " + (content1.length() + content2.length()) + "\r\n" +
"\r\n" + "\r\n" +
content1).getBytes("UTF-8")); content1).getBytes(StandardCharsets.UTF_8));
serverOutput.flush(); serverOutput.flush();
Assert.assertTrue(automaticProxyFlow.stop(5, TimeUnit.SECONDS)); Assert.assertTrue(automaticProxyFlow.stop(5, TimeUnit.SECONDS));
@ -319,7 +321,7 @@ public class SslBytesClientTest extends SslBytesTest
// Read request // Read request
InputStream serverInput = server.getInputStream(); InputStream serverInput = server.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(serverInput, "UTF-8")); BufferedReader reader = new BufferedReader(new InputStreamReader(serverInput, StandardCharsets.UTF_8));
String line = reader.readLine(); String line = reader.readLine();
Assert.assertTrue(line.startsWith("GET")); Assert.assertTrue(line.startsWith("GET"));
while (line.length() > 0) while (line.length() > 0)
@ -328,16 +330,16 @@ public class SslBytesClientTest extends SslBytesTest
OutputStream serverOutput = server.getOutputStream(); OutputStream serverOutput = server.getOutputStream();
byte[] data1 = new byte[1024]; byte[] data1 = new byte[1024];
Arrays.fill(data1, (byte)'X'); Arrays.fill(data1, (byte)'X');
String content1 = new String(data1, "UTF-8"); String content1 = new String(data1, StandardCharsets.UTF_8);
byte[] data2 = new byte[1024]; byte[] data2 = new byte[1024];
Arrays.fill(data2, (byte)'Y'); Arrays.fill(data2, (byte)'Y');
final String content2 = new String(data2, "UTF-8"); final String content2 = new String(data2, StandardCharsets.UTF_8);
// Write first part of the response // Write first part of the response
serverOutput.write(("HTTP/1.1 200 OK\r\n" + serverOutput.write(("HTTP/1.1 200 OK\r\n" +
"Content-Type: text/plain\r\n" + "Content-Type: text/plain\r\n" +
"Content-Length: " + (content1.length() + content2.length()) + "\r\n" + "Content-Length: " + (content1.length() + content2.length()) + "\r\n" +
"\r\n" + "\r\n" +
content1).getBytes("UTF-8")); content1).getBytes(StandardCharsets.UTF_8));
serverOutput.flush(); serverOutput.flush();
Assert.assertTrue(automaticProxyFlow.stop(5, TimeUnit.SECONDS)); Assert.assertTrue(automaticProxyFlow.stop(5, TimeUnit.SECONDS));

View File

@ -30,6 +30,7 @@ import java.net.SocketTimeoutException;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.channels.SelectionKey; import java.nio.channels.SelectionKey;
import java.nio.channels.SocketChannel; import java.nio.channels.SocketChannel;
import java.nio.charset.StandardCharsets;
import java.util.Arrays; import java.util.Arrays;
import java.util.concurrent.Callable; import java.util.concurrent.Callable;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
@ -586,7 +587,7 @@ public class SslBytesServerTest extends SslBytesTest
clientOutput.write(("" + clientOutput.write(("" +
"GET / HTTP/1.1\r\n" + "GET / HTTP/1.1\r\n" +
"Host: localhost\r\n" + "Host: localhost\r\n" +
"\r\n").getBytes("UTF-8")); "\r\n").getBytes(StandardCharsets.UTF_8));
clientOutput.flush(); clientOutput.flush();
return null; return null;
} }
@ -628,7 +629,7 @@ public class SslBytesServerTest extends SslBytesTest
clientOutput.write(("" + clientOutput.write(("" +
"GET / HTTP/1.1\r\n" + "GET / HTTP/1.1\r\n" +
"Host: localhost\r\n" + "Host: localhost\r\n" +
"\r\n").getBytes("UTF-8")); "\r\n").getBytes(StandardCharsets.UTF_8));
clientOutput.flush(); clientOutput.flush();
return null; return null;
} }
@ -644,7 +645,7 @@ public class SslBytesServerTest extends SslBytesTest
Assert.assertEquals(TLSRecord.Type.APPLICATION, record.getType()); Assert.assertEquals(TLSRecord.Type.APPLICATION, record.getType());
proxy.flushToClient(record); proxy.flushToClient(record);
BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream(), "UTF-8")); BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream(), StandardCharsets.UTF_8));
String line = reader.readLine(); String line = reader.readLine();
Assert.assertNotNull(line); Assert.assertNotNull(line);
Assert.assertTrue(line.startsWith("HTTP/1.1 200 ")); Assert.assertTrue(line.startsWith("HTTP/1.1 200 "));
@ -721,7 +722,7 @@ public class SslBytesServerTest extends SslBytesTest
clientOutput.write(("" + clientOutput.write(("" +
"GET / HTTP/1.1\r\n" + "GET / HTTP/1.1\r\n" +
"Host: localhost\r\n" + "Host: localhost\r\n" +
"\r\n").getBytes("UTF-8")); "\r\n").getBytes(StandardCharsets.UTF_8));
clientOutput.flush(); clientOutput.flush();
return null; return null;
} }
@ -738,7 +739,7 @@ public class SslBytesServerTest extends SslBytesTest
Assert.assertEquals(TLSRecord.Type.APPLICATION, record.getType()); Assert.assertEquals(TLSRecord.Type.APPLICATION, record.getType());
proxy.flushToClient(record); proxy.flushToClient(record);
BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream(), "UTF-8")); BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream(), StandardCharsets.UTF_8));
String line = reader.readLine(); String line = reader.readLine();
Assert.assertNotNull(line); Assert.assertNotNull(line);
Assert.assertTrue(line.startsWith("HTTP/1.1 200 ")); Assert.assertTrue(line.startsWith("HTTP/1.1 200 "));
@ -801,7 +802,7 @@ public class SslBytesServerTest extends SslBytesTest
clientOutput.write(("" + clientOutput.write(("" +
"GET / HTTP/1.1\r\n" + "GET / HTTP/1.1\r\n" +
"Host: localhost\r\n" + "Host: localhost\r\n" +
"\r\n").getBytes("UTF-8")); "\r\n").getBytes(StandardCharsets.UTF_8));
clientOutput.flush(); clientOutput.flush();
return null; return null;
} }
@ -876,7 +877,7 @@ public class SslBytesServerTest extends SslBytesTest
clientOutput.write(("" + clientOutput.write(("" +
"GET / HTTP/1.1\r\n" + "GET / HTTP/1.1\r\n" +
"Host: localhost\r\n" + "Host: localhost\r\n" +
"\r\n").getBytes("UTF-8")); "\r\n").getBytes(StandardCharsets.UTF_8));
clientOutput.flush(); clientOutput.flush();
return null; return null;
} }
@ -946,7 +947,7 @@ public class SslBytesServerTest extends SslBytesTest
clientOutput.write(("" + clientOutput.write(("" +
"GET / HTTP/1.1\r\n" + "GET / HTTP/1.1\r\n" +
"Host: localhost\r\n" + "Host: localhost\r\n" +
"\r\n").getBytes("UTF-8")); "\r\n").getBytes(StandardCharsets.UTF_8));
clientOutput.flush(); clientOutput.flush();
return null; return null;
} }
@ -1005,7 +1006,7 @@ public class SslBytesServerTest extends SslBytesTest
clientOutput.write(("" + clientOutput.write(("" +
"GET / HTTP/1.1\r\n" + "GET / HTTP/1.1\r\n" +
"Host: localhost\r\n" + "Host: localhost\r\n" +
"\r\n").getBytes("UTF-8")); "\r\n").getBytes(StandardCharsets.UTF_8));
clientOutput.flush(); clientOutput.flush();
return null; return null;
} }
@ -1058,7 +1059,7 @@ public class SslBytesServerTest extends SslBytesTest
byte[] data = new byte[128 * 1024]; byte[] data = new byte[128 * 1024];
Arrays.fill(data, (byte)'X'); Arrays.fill(data, (byte)'X');
final String content = new String(data, "UTF-8"); final String content = new String(data, StandardCharsets.UTF_8);
Future<Object> request = threadPool.submit(new Callable<Object>() Future<Object> request = threadPool.submit(new Callable<Object>()
{ {
@Override @Override
@ -1070,7 +1071,7 @@ public class SslBytesServerTest extends SslBytesTest
"Host: localhost\r\n" + "Host: localhost\r\n" +
"Content-Length: " + content.length() + "\r\n" + "Content-Length: " + content.length() + "\r\n" +
"\r\n" + "\r\n" +
content).getBytes("UTF-8")); content).getBytes(StandardCharsets.UTF_8));
clientOutput.flush(); clientOutput.flush();
return null; return null;
} }
@ -1116,7 +1117,7 @@ public class SslBytesServerTest extends SslBytesTest
byte[] data = new byte[128 * 1024]; byte[] data = new byte[128 * 1024];
Arrays.fill(data, (byte)'X'); Arrays.fill(data, (byte)'X');
final String content = new String(data, "UTF-8"); final String content = new String(data, StandardCharsets.UTF_8);
Future<Object> request = threadPool.submit(new Callable<Object>() Future<Object> request = threadPool.submit(new Callable<Object>()
{ {
@Override @Override
@ -1128,7 +1129,7 @@ public class SslBytesServerTest extends SslBytesTest
"Host: localhost\r\n" + "Host: localhost\r\n" +
"Content-Length: " + content.length() + "\r\n" + "Content-Length: " + content.length() + "\r\n" +
"\r\n" + "\r\n" +
content).getBytes("UTF-8")); content).getBytes(StandardCharsets.UTF_8));
clientOutput.flush(); clientOutput.flush();
return null; return null;
} }
@ -1190,7 +1191,7 @@ public class SslBytesServerTest extends SslBytesTest
clientOutput.write(("" + clientOutput.write(("" +
"GET / HTTP/1.1\r\n" + "GET / HTTP/1.1\r\n" +
"Host: localhost\r\n" + "Host: localhost\r\n" +
"\r\n").getBytes("UTF-8")); "\r\n").getBytes(StandardCharsets.UTF_8));
clientOutput.flush(); clientOutput.flush();
return null; return null;
} }
@ -1269,7 +1270,7 @@ public class SslBytesServerTest extends SslBytesTest
"Content-Type: text/plain\r\n" + "Content-Type: text/plain\r\n" +
"Content-Length: " + content.length() + "\r\n" + "Content-Length: " + content.length() + "\r\n" +
"\r\n" + "\r\n" +
content).getBytes("UTF-8")); content).getBytes(StandardCharsets.UTF_8));
clientOutput.flush(); clientOutput.flush();
return null; return null;
} }
@ -1290,7 +1291,7 @@ public class SslBytesServerTest extends SslBytesTest
Assert.assertEquals(TLSRecord.Type.APPLICATION, record.getType()); Assert.assertEquals(TLSRecord.Type.APPLICATION, record.getType());
proxy.flushToClient(record); proxy.flushToClient(record);
BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream(), "UTF-8")); BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream(), StandardCharsets.UTF_8));
String line = reader.readLine(); String line = reader.readLine();
Assert.assertNotNull(line); Assert.assertNotNull(line);
Assert.assertTrue(line.startsWith("HTTP/1.1 200 ")); Assert.assertTrue(line.startsWith("HTTP/1.1 200 "));
@ -1321,7 +1322,7 @@ public class SslBytesServerTest extends SslBytesTest
// Use a content that is larger than the TLS record which is 2^14 (around 16k) // Use a content that is larger than the TLS record which is 2^14 (around 16k)
byte[] data = new byte[128 * 1024]; byte[] data = new byte[128 * 1024];
Arrays.fill(data, (byte)'X'); Arrays.fill(data, (byte)'X');
final String content = new String(data, "UTF-8"); final String content = new String(data, StandardCharsets.UTF_8);
Future<Object> request = threadPool.submit(new Callable<Object>() Future<Object> request = threadPool.submit(new Callable<Object>()
{ {
@ -1335,7 +1336,7 @@ public class SslBytesServerTest extends SslBytesTest
"Content-Type: text/plain\r\n" + "Content-Type: text/plain\r\n" +
"Content-Length: " + content.length() + "\r\n" + "Content-Length: " + content.length() + "\r\n" +
"\r\n" + "\r\n" +
content).getBytes("UTF-8")); content).getBytes(StandardCharsets.UTF_8));
clientOutput.flush(); clientOutput.flush();
return null; return null;
} }
@ -1367,7 +1368,7 @@ public class SslBytesServerTest extends SslBytesTest
Assert.assertEquals(TLSRecord.Type.APPLICATION, record.getType()); Assert.assertEquals(TLSRecord.Type.APPLICATION, record.getType());
proxy.flushToClient(record); proxy.flushToClient(record);
BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream(), "UTF-8")); BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream(), StandardCharsets.UTF_8));
String line = reader.readLine(); String line = reader.readLine();
Assert.assertNotNull(line); Assert.assertNotNull(line);
Assert.assertTrue(line.startsWith("HTTP/1.1 200 ")); Assert.assertTrue(line.startsWith("HTTP/1.1 200 "));
@ -1402,10 +1403,10 @@ public class SslBytesServerTest extends SslBytesTest
byte[] data1 = new byte[1024]; byte[] data1 = new byte[1024];
Arrays.fill(data1, (byte)'X'); Arrays.fill(data1, (byte)'X');
String content1 = new String(data1, "UTF-8"); String content1 = new String(data1, StandardCharsets.UTF_8);
byte[] data2 = new byte[1024]; byte[] data2 = new byte[1024];
Arrays.fill(data2, (byte)'Y'); Arrays.fill(data2, (byte)'Y');
final String content2 = new String(data2, "UTF-8"); final String content2 = new String(data2, StandardCharsets.UTF_8);
// Write only part of the body // Write only part of the body
automaticProxyFlow = proxy.startAutomaticFlow(); automaticProxyFlow = proxy.startAutomaticFlow();
@ -1415,7 +1416,7 @@ public class SslBytesServerTest extends SslBytesTest
"Content-Type: text/plain\r\n" + "Content-Type: text/plain\r\n" +
"Content-Length: " + (content1.length() + content2.length()) + "\r\n" + "Content-Length: " + (content1.length() + content2.length()) + "\r\n" +
"\r\n" + "\r\n" +
content1).getBytes("UTF-8")); content1).getBytes(StandardCharsets.UTF_8));
clientOutput.flush(); clientOutput.flush();
Assert.assertTrue(automaticProxyFlow.stop(5, TimeUnit.SECONDS)); Assert.assertTrue(automaticProxyFlow.stop(5, TimeUnit.SECONDS));
@ -1449,7 +1450,7 @@ public class SslBytesServerTest extends SslBytesTest
@Override @Override
public Object call() throws Exception public Object call() throws Exception
{ {
clientOutput.write(content2.getBytes("UTF-8")); clientOutput.write(content2.getBytes(StandardCharsets.UTF_8));
clientOutput.flush(); clientOutput.flush();
return null; return null;
} }
@ -1493,10 +1494,10 @@ public class SslBytesServerTest extends SslBytesTest
// Use a content that is larger than the TLS record which is 2^14 (around 16k) // Use a content that is larger than the TLS record which is 2^14 (around 16k)
byte[] data1 = new byte[80 * 1024]; byte[] data1 = new byte[80 * 1024];
Arrays.fill(data1, (byte)'X'); Arrays.fill(data1, (byte)'X');
String content1 = new String(data1, "UTF-8"); String content1 = new String(data1, StandardCharsets.UTF_8);
byte[] data2 = new byte[48 * 1024]; byte[] data2 = new byte[48 * 1024];
Arrays.fill(data2, (byte)'Y'); Arrays.fill(data2, (byte)'Y');
final String content2 = new String(data2, "UTF-8"); final String content2 = new String(data2, StandardCharsets.UTF_8);
// Write only part of the body // Write only part of the body
automaticProxyFlow = proxy.startAutomaticFlow(); automaticProxyFlow = proxy.startAutomaticFlow();
@ -1506,7 +1507,7 @@ public class SslBytesServerTest extends SslBytesTest
"Content-Type: text/plain\r\n" + "Content-Type: text/plain\r\n" +
"Content-Length: " + (content1.length() + content2.length()) + "\r\n" + "Content-Length: " + (content1.length() + content2.length()) + "\r\n" +
"\r\n" + "\r\n" +
content1).getBytes("UTF-8")); content1).getBytes(StandardCharsets.UTF_8));
clientOutput.flush(); clientOutput.flush();
Assert.assertTrue(automaticProxyFlow.stop(5, TimeUnit.SECONDS)); Assert.assertTrue(automaticProxyFlow.stop(5, TimeUnit.SECONDS));
@ -1571,7 +1572,7 @@ public class SslBytesServerTest extends SslBytesTest
@Override @Override
public Object call() throws Exception public Object call() throws Exception
{ {
clientOutput.write(content2.getBytes("UTF-8")); clientOutput.write(content2.getBytes(StandardCharsets.UTF_8));
clientOutput.flush(); clientOutput.flush();
return null; return null;
} }
@ -1593,7 +1594,7 @@ public class SslBytesServerTest extends SslBytesTest
Assert.assertEquals(TLSRecord.Type.APPLICATION, record.getType()); Assert.assertEquals(TLSRecord.Type.APPLICATION, record.getType());
proxy.flushToClient(record); proxy.flushToClient(record);
BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream(), "UTF-8")); BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream(), StandardCharsets.UTF_8));
String line = reader.readLine(); String line = reader.readLine();
Assert.assertNotNull(line); Assert.assertNotNull(line);
Assert.assertTrue(line.startsWith("HTTP/1.1 200 ")); Assert.assertTrue(line.startsWith("HTTP/1.1 200 "));
@ -1627,10 +1628,10 @@ public class SslBytesServerTest extends SslBytesTest
// Use a content that is larger than the TLS record which is 2^14 (around 16k) // Use a content that is larger than the TLS record which is 2^14 (around 16k)
byte[] data1 = new byte[80 * 1024]; byte[] data1 = new byte[80 * 1024];
Arrays.fill(data1, (byte)'X'); Arrays.fill(data1, (byte)'X');
String content1 = new String(data1, "UTF-8"); String content1 = new String(data1, StandardCharsets.UTF_8);
byte[] data2 = new byte[48 * 1024]; byte[] data2 = new byte[48 * 1024];
Arrays.fill(data2, (byte)'Y'); Arrays.fill(data2, (byte)'Y');
final String content2 = new String(data2, "UTF-8"); final String content2 = new String(data2, StandardCharsets.UTF_8);
// Write only part of the body // Write only part of the body
automaticProxyFlow = proxy.startAutomaticFlow(); automaticProxyFlow = proxy.startAutomaticFlow();
@ -1640,7 +1641,7 @@ public class SslBytesServerTest extends SslBytesTest
"Content-Type: text/plain\r\n" + "Content-Type: text/plain\r\n" +
"Content-Length: " + (content1.length() + content2.length()) + "\r\n" + "Content-Length: " + (content1.length() + content2.length()) + "\r\n" +
"\r\n" + "\r\n" +
content1).getBytes("UTF-8")); content1).getBytes(StandardCharsets.UTF_8));
clientOutput.flush(); clientOutput.flush();
Assert.assertTrue(automaticProxyFlow.stop(5, TimeUnit.SECONDS)); Assert.assertTrue(automaticProxyFlow.stop(5, TimeUnit.SECONDS));
@ -1723,7 +1724,7 @@ public class SslBytesServerTest extends SslBytesTest
@Override @Override
public Object call() throws Exception public Object call() throws Exception
{ {
clientOutput.write(content2.getBytes("UTF-8")); clientOutput.write(content2.getBytes(StandardCharsets.UTF_8));
clientOutput.flush(); clientOutput.flush();
return null; return null;
} }
@ -1755,7 +1756,7 @@ public class SslBytesServerTest extends SslBytesTest
Assert.assertEquals(TLSRecord.Type.APPLICATION, record.getType()); Assert.assertEquals(TLSRecord.Type.APPLICATION, record.getType());
proxy.flushToClient(record); proxy.flushToClient(record);
BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream(), "UTF-8")); BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream(), StandardCharsets.UTF_8));
String line = reader.readLine(); String line = reader.readLine();
Assert.assertNotNull(line); Assert.assertNotNull(line);
Assert.assertTrue(line.startsWith("HTTP/1.1 200 ")); Assert.assertTrue(line.startsWith("HTTP/1.1 200 "));
@ -1786,7 +1787,7 @@ public class SslBytesServerTest extends SslBytesTest
byte[] data = new byte[3 * 1024]; byte[] data = new byte[3 * 1024];
Arrays.fill(data, (byte)'Y'); Arrays.fill(data, (byte)'Y');
String content = new String(data, "UTF-8"); String content = new String(data, StandardCharsets.UTF_8);
automaticProxyFlow = proxy.startAutomaticFlow(); automaticProxyFlow = proxy.startAutomaticFlow();
clientOutput.write(("" + clientOutput.write(("" +
"POST / HTTP/1.1\r\n" + "POST / HTTP/1.1\r\n" +
@ -1795,10 +1796,10 @@ public class SslBytesServerTest extends SslBytesTest
"Content-Length: " + content.length() + "\r\n" + "Content-Length: " + content.length() + "\r\n" +
"Connection: close\r\n" + "Connection: close\r\n" +
"\r\n" + "\r\n" +
content).getBytes("UTF-8")); content).getBytes(StandardCharsets.UTF_8));
clientOutput.flush(); clientOutput.flush();
BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream(), "UTF-8")); BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream(), StandardCharsets.UTF_8));
String line = reader.readLine(); String line = reader.readLine();
Assert.assertNotNull(line); Assert.assertNotNull(line);
Assert.assertTrue(line.startsWith("HTTP/1.1 200 ")); Assert.assertTrue(line.startsWith("HTTP/1.1 200 "));
@ -1844,7 +1845,7 @@ public class SslBytesServerTest extends SslBytesTest
}); });
// Instead of passing the Client Hello, we simulate plain text was passed in // Instead of passing the Client Hello, we simulate plain text was passed in
proxy.flushToServer(0, "GET / HTTP/1.1\r\n".getBytes("UTF-8")); proxy.flushToServer(0, "GET / HTTP/1.1\r\n".getBytes(StandardCharsets.UTF_8));
// We expect that the server closes the connection immediately // We expect that the server closes the connection immediately
TLSRecord record = proxy.readFromServer(); TLSRecord record = proxy.readFromServer();
@ -1878,7 +1879,7 @@ public class SslBytesServerTest extends SslBytesTest
clientOutput.write(("" + clientOutput.write(("" +
"GET / HTTP/1.1\r\n" + "GET / HTTP/1.1\r\n" +
"Host: localhost\r\n" + "Host: localhost\r\n" +
"\r\n").getBytes("UTF-8")); "\r\n").getBytes(StandardCharsets.UTF_8));
clientOutput.flush(); clientOutput.flush();
latch.countDown(); latch.countDown();
} }

View File

@ -18,7 +18,7 @@
package org.eclipse.jetty.deploy.test; package org.eclipse.jetty.deploy.test;
import static org.hamcrest.Matchers.*; import static org.hamcrest.Matchers.is;
import java.io.File; import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;

View File

@ -64,27 +64,6 @@ public class DelegatingThreadPool extends ContainerLifeCycle implements ThreadPo
_executor.execute(job); _executor.execute(job);
} }
/* ------------------------------------------------------------ */
@Override
public boolean dispatch(Runnable job)
{
final Executor executor=_executor;
if (executor instanceof ThreadPool)
return ((ThreadPool)executor).dispatch(job);
try
{
_executor.execute(job);
return true;
}
catch(RejectedExecutionException e)
{
LOG.warn(e);
return false;
}
}
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */
@Override @Override
public int getIdleThreads() public int getIdleThreads()

View File

@ -32,7 +32,6 @@ import org.eclipse.jetty.server.handler.ContextHandler;
import com.sun.net.httpserver.Authenticator; import com.sun.net.httpserver.Authenticator;
import com.sun.net.httpserver.Authenticator.Result; import com.sun.net.httpserver.Authenticator.Result;
import com.sun.net.httpserver.BasicAuthenticator;
import com.sun.net.httpserver.HttpContext; import com.sun.net.httpserver.HttpContext;
import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler; import com.sun.net.httpserver.HttpHandler;

View File

@ -18,25 +18,6 @@
package org.eclipse.jetty.http.spi; package org.eclipse.jetty.http.spi;
import com.sun.net.httpserver.HttpContext;
import com.sun.net.httpserver.HttpHandler;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.NetworkConnector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.server.handler.ContextHandler;
import org.eclipse.jetty.server.handler.HandlerCollection;
import org.eclipse.jetty.server.handler.ContextHandlerCollection;
import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Logger;
import org.eclipse.jetty.util.thread.ThreadPool;
import java.io.IOException; import java.io.IOException;
import java.net.InetSocketAddress; import java.net.InetSocketAddress;
import java.util.Collection; import java.util.Collection;
@ -45,6 +26,21 @@ import java.util.Map;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.ThreadPoolExecutor;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.NetworkConnector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.server.handler.ContextHandler;
import org.eclipse.jetty.server.handler.ContextHandlerCollection;
import org.eclipse.jetty.server.handler.HandlerCollection;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
import org.eclipse.jetty.util.thread.ThreadPool;
import com.sun.net.httpserver.HttpContext;
import com.sun.net.httpserver.HttpHandler;
/** /**
* Jetty implementation of {@link com.sun.net.httpserver.HttpServer}. * Jetty implementation of {@link com.sun.net.httpserver.HttpServer}.
*/ */

View File

@ -23,10 +23,9 @@ import java.net.InetSocketAddress;
import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.ContextHandlerCollection;
import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.server.handler.DefaultHandler;
import org.eclipse.jetty.server.handler.HandlerCollection; import org.eclipse.jetty.server.handler.HandlerCollection;
import org.eclipse.jetty.server.handler.ContextHandlerCollection;
import org.eclipse.jetty.util.thread.ExecutorThreadPool;
import org.eclipse.jetty.util.thread.QueuedThreadPool; import org.eclipse.jetty.util.thread.QueuedThreadPool;
import org.eclipse.jetty.util.thread.ThreadPool; import org.eclipse.jetty.util.thread.ThreadPool;

View File

@ -19,6 +19,7 @@
package org.eclipse.jetty.http; package org.eclipse.jetty.http;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import org.eclipse.jetty.http.HttpTokens.EndOfContent; import org.eclipse.jetty.http.HttpTokens.EndOfContent;
import org.eclipse.jetty.util.ArrayTernaryTrie; import org.eclipse.jetty.util.ArrayTernaryTrie;
@ -1025,12 +1026,12 @@ public class HttpParser
// Have to get the fields exactly from the buffer to match case // Have to get the fields exactly from the buffer to match case
String fn=field.getName(); String fn=field.getName();
String fv=field.getValue(); String fv=field.getValue();
n=BufferUtil.toString(buffer,buffer.position()-1,fn.length(),StringUtil.__US_ASCII_CHARSET); n=BufferUtil.toString(buffer,buffer.position()-1,fn.length(),StandardCharsets.US_ASCII);
if (fv==null) if (fv==null)
v=null; v=null;
else else
{ {
v=BufferUtil.toString(buffer,buffer.position()+fn.length()+1,fv.length(),StringUtil.__ISO_8859_1_CHARSET); v=BufferUtil.toString(buffer,buffer.position()+fn.length()+1,fv.length(),StandardCharsets.ISO_8859_1);
field=new HttpField(field.getHeader(),n,v); field=new HttpField(field.getHeader(),n,v);
} }
} }

View File

@ -22,6 +22,7 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import org.eclipse.jetty.http.HttpGenerator.RequestInfo; import org.eclipse.jetty.http.HttpGenerator.RequestInfo;
import org.eclipse.jetty.http.HttpGenerator.ResponseInfo; import org.eclipse.jetty.http.HttpGenerator.ResponseInfo;
@ -346,7 +347,7 @@ public class HttpTester
String content_type=get(HttpHeader.CONTENT_TYPE); String content_type=get(HttpHeader.CONTENT_TYPE);
String encoding=MimeTypes.getCharsetFromContentType(content_type); String encoding=MimeTypes.getCharsetFromContentType(content_type);
Charset charset=encoding==null?StringUtil.__UTF8_CHARSET:Charset.forName(encoding); Charset charset=encoding==null?StandardCharsets.UTF_8:Charset.forName(encoding);
return new String(bytes,charset); return new String(bytes,charset);
} }

View File

@ -21,6 +21,7 @@ package org.eclipse.jetty.http;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.net.URI; import java.net.URI;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import org.eclipse.jetty.util.MultiMap; import org.eclipse.jetty.util.MultiMap;
import org.eclipse.jetty.util.StringUtil; import org.eclipse.jetty.util.StringUtil;
@ -100,15 +101,7 @@ public class HttpURI
public HttpURI(String raw) public HttpURI(String raw)
{ {
_rawString=raw; _rawString=raw;
byte[] b; byte[] b = raw.getBytes(StandardCharsets.UTF_8);
try
{
b = raw.getBytes(StringUtil.__UTF8);
}
catch (UnsupportedEncodingException e)
{
throw new RuntimeException(e.getMessage());
}
parse(b,0,b.length); parse(b,0,b.length);
_charset = URIUtil.__CHARSET; _charset = URIUtil.__CHARSET;
} }
@ -619,6 +612,11 @@ public class HttpURI
} }
public String getDecodedPath(String encoding) public String getDecodedPath(String encoding)
{
return getDecodedPath(Charset.forName(encoding));
}
public String getDecodedPath(Charset encoding)
{ {
if (_path==_param) if (_path==_param)
return null; return null;
@ -678,9 +676,9 @@ public class HttpURI
if (bytes==null) if (bytes==null)
return StringUtil.toString(_raw,_path,_param-_path,encoding); return new String(_raw,_path,_param-_path,encoding);
return StringUtil.toString(bytes,0,n,encoding); return new String(bytes,0,n,encoding);
} }
public String getPathAndParam() public String getPathAndParam()
@ -734,10 +732,10 @@ public class HttpURI
{ {
if (_query==_fragment) if (_query==_fragment)
return; return;
if (_charset==StringUtil.__UTF8_CHARSET) if (_charset.equals(StandardCharsets.UTF_8))
UrlEncoded.decodeUtf8To(_raw,_query+1,_fragment-_query-1,parameters); UrlEncoded.decodeUtf8To(_raw,_query+1,_fragment-_query-1,parameters);
else else
UrlEncoded.decodeTo(StringUtil.toString(_raw,_query+1,_fragment-_query-1,_charset.toString()),parameters,_charset.toString(),-1); UrlEncoded.decodeTo(new String(_raw,_query+1,_fragment-_query-1,_charset),parameters,_charset,-1);
} }
public void decodeQueryTo(MultiMap<String> parameters, String encoding) throws UnsupportedEncodingException public void decodeQueryTo(MultiMap<String> parameters, String encoding) throws UnsupportedEncodingException
@ -751,6 +749,17 @@ public class HttpURI
UrlEncoded.decodeTo(StringUtil.toString(_raw,_query+1,_fragment-_query-1,encoding),parameters,encoding,-1); UrlEncoded.decodeTo(StringUtil.toString(_raw,_query+1,_fragment-_query-1,encoding),parameters,encoding,-1);
} }
public void decodeQueryTo(MultiMap<String> parameters, Charset encoding) throws UnsupportedEncodingException
{
if (_query==_fragment)
return;
if (encoding==null || StandardCharsets.UTF_8.equals(encoding))
UrlEncoded.decodeUtf8To(_raw,_query+1,_fragment-_query-1,parameters);
else
UrlEncoded.decodeTo(new String(_raw,_query+1,_fragment-_query-1,encoding),parameters,encoding,-1);
}
public void clear() public void clear()
{ {
_scheme=_authority=_host=_port=_path=_param=_query=_fragment=_end=0; _scheme=_authority=_host=_port=_path=_param=_query=_fragment=_end=0;

View File

@ -26,7 +26,6 @@ import java.util.Map;
import java.util.StringTokenizer; import java.util.StringTokenizer;
import org.eclipse.jetty.util.ArrayTernaryTrie; import org.eclipse.jetty.util.ArrayTernaryTrie;
import org.eclipse.jetty.util.LazyList;
import org.eclipse.jetty.util.Trie; import org.eclipse.jetty.util.Trie;
import org.eclipse.jetty.util.URIUtil; import org.eclipse.jetty.util.URIUtil;

View File

@ -34,7 +34,6 @@ import java.util.List;
import org.eclipse.jetty.http.HttpGenerator.ResponseInfo; import org.eclipse.jetty.http.HttpGenerator.ResponseInfo;
import org.eclipse.jetty.util.BufferUtil; import org.eclipse.jetty.util.BufferUtil;
import org.hamcrest.Matchers;
import org.junit.Test; import org.junit.Test;
public class HttpGeneratorServerTest public class HttpGeneratorServerTest

View File

@ -24,12 +24,12 @@ import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.eclipse.jetty.http.HttpParser.State; import org.eclipse.jetty.http.HttpParser.State;
import org.eclipse.jetty.util.BufferUtil; import org.eclipse.jetty.util.BufferUtil;
import org.eclipse.jetty.util.StringUtil;
import org.hamcrest.Matchers; import org.hamcrest.Matchers;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@ -112,7 +112,7 @@ public class HttpParserTest
@Test @Test
public void testLineParse3() throws Exception public void testLineParse3() throws Exception
{ {
ByteBuffer buffer= BufferUtil.toBuffer("POST /fo\u0690 HTTP/1.0\015\012" + "\015\012",StringUtil.__UTF8_CHARSET); ByteBuffer buffer= BufferUtil.toBuffer("POST /fo\u0690 HTTP/1.0\015\012" + "\015\012",StandardCharsets.UTF_8);
HttpParser.RequestHandler<ByteBuffer> handler = new Handler(); HttpParser.RequestHandler<ByteBuffer> handler = new Handler();
HttpParser parser= new HttpParser(handler); HttpParser parser= new HttpParser(handler);
@ -126,7 +126,7 @@ public class HttpParserTest
@Test @Test
public void testLineParse4() throws Exception public void testLineParse4() throws Exception
{ {
ByteBuffer buffer= BufferUtil.toBuffer("POST /foo?param=\u0690 HTTP/1.0\015\012" + "\015\012",StringUtil.__UTF8_CHARSET); ByteBuffer buffer= BufferUtil.toBuffer("POST /foo?param=\u0690 HTTP/1.0\015\012" + "\015\012",StandardCharsets.UTF_8);
HttpParser.RequestHandler<ByteBuffer> handler = new Handler(); HttpParser.RequestHandler<ByteBuffer> handler = new Handler();
HttpParser parser= new HttpParser(handler); HttpParser parser= new HttpParser(handler);
@ -346,10 +346,10 @@ public class HttpParserTest
ByteBuffer buffer=BufferUtil.allocate(4096); ByteBuffer buffer=BufferUtil.allocate(4096);
BufferUtil.flipToFill(buffer); BufferUtil.flipToFill(buffer);
BufferUtil.put(BufferUtil.toBuffer("GET "),buffer); BufferUtil.put(BufferUtil.toBuffer("GET "),buffer);
buffer.put("/foo/\u0690/".getBytes(StringUtil.__UTF8_CHARSET)); buffer.put("/foo/\u0690/".getBytes(StandardCharsets.UTF_8));
BufferUtil.put(BufferUtil.toBuffer(" HTTP/1.0\r\n"),buffer); BufferUtil.put(BufferUtil.toBuffer(" HTTP/1.0\r\n"),buffer);
BufferUtil.put(BufferUtil.toBuffer("Header1: "),buffer); BufferUtil.put(BufferUtil.toBuffer("Header1: "),buffer);
buffer.put("\u00e6 \u00e6".getBytes(StringUtil.__ISO_8859_1_CHARSET)); buffer.put("\u00e6 \u00e6".getBytes(StandardCharsets.ISO_8859_1));
BufferUtil.put(BufferUtil.toBuffer(" \r\n\r\n"),buffer); BufferUtil.put(BufferUtil.toBuffer(" \r\n\r\n"),buffer);
BufferUtil.flipToFlush(buffer,0); BufferUtil.flipToFlush(buffer,0);
@ -1348,7 +1348,7 @@ public class HttpParserTest
{ {
if (_content==null) if (_content==null)
_content=""; _content="";
String c = BufferUtil.toString(ref,StringUtil.__UTF8_CHARSET); String c = BufferUtil.toString(ref,StandardCharsets.UTF_8);
//System.err.println("content '"+c+"'"); //System.err.println("content '"+c+"'");
_content= _content + c; _content= _content + c;
ref.position(ref.limit()); ref.position(ref.limit());

View File

@ -23,9 +23,9 @@ import java.net.InetSocketAddress;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.channels.ClosedChannelException; import java.nio.channels.ClosedChannelException;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import org.eclipse.jetty.util.BufferUtil; import org.eclipse.jetty.util.BufferUtil;
import org.eclipse.jetty.util.StringUtil;
import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.util.log.Logger;
import org.eclipse.jetty.util.thread.Scheduler; import org.eclipse.jetty.util.thread.Scheduler;
@ -153,7 +153,7 @@ public class ByteArrayEndPoint extends AbstractEndPoint
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */
public void setInput(String s) public void setInput(String s)
{ {
setInput(BufferUtil.toBuffer(s,StringUtil.__UTF8_CHARSET)); setInput(BufferUtil.toBuffer(s,StandardCharsets.UTF_8));
} }
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */
@ -177,7 +177,7 @@ public class ByteArrayEndPoint extends AbstractEndPoint
*/ */
public String getOutputString() public String getOutputString()
{ {
return getOutputString(StringUtil.__UTF8_CHARSET); return getOutputString(StandardCharsets.UTF_8);
} }
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */
@ -207,7 +207,7 @@ public class ByteArrayEndPoint extends AbstractEndPoint
*/ */
public String takeOutputString() public String takeOutputString()
{ {
return takeOutputString(StringUtil.__UTF8_CHARSET); return takeOutputString(StandardCharsets.UTF_8);
} }
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */

View File

@ -164,6 +164,33 @@ public abstract class SelectorManager extends AbstractLifeCycle implements Dumpa
selector.submit(selector.new Accept(channel)); selector.submit(selector.new Accept(channel));
} }
/**
* <p>Registers a channel to select accept operations.
* When a {@link SocketChannel} is accepted from this {@link ServerSocketChannel}
* then the {@link #accepted(SocketChannel)} method is called, which must be
* overridden by a derivation of this class to handle the accepted channel
*
* @param channel the server channel to register
*/
public void acceptor(final ServerSocketChannel server)
{
final ManagedSelector selector = chooseSelector();
selector.submit(selector.new Acceptor(server));
}
/**
* Callback method when a channel is accepted from the {@link ServerSocketChannel}
* passed in {@link #acceptor(ServerSocketChannel)}.
* The default impl throws an {@link UnsupportedOperationException}, so it must
* be overridden if selected acceptor is to be used.
* @param channel
* @throws IOException
*/
protected void accepted(SocketChannel channel) throws IOException
{
throw new UnsupportedOperationException();
}
@Override @Override
protected void doStart() throws Exception protected void doStart() throws Exception
{ {
@ -544,6 +571,10 @@ public abstract class SelectorManager extends AbstractLifeCycle implements Dumpa
{ {
processConnect(key, (Connect)attachment); processConnect(key, (Connect)attachment);
} }
else if (key.isAcceptable())
{
processAccept(key);
}
else else
{ {
throw new IllegalStateException(); throw new IllegalStateException();
@ -588,6 +619,23 @@ public abstract class SelectorManager extends AbstractLifeCycle implements Dumpa
} }
} }
private void processAccept(SelectionKey key)
{
ServerSocketChannel server = (ServerSocketChannel)key.channel();
try
{
SocketChannel channel;
while ((channel=server.accept())!=null)
{
accepted(channel);
}
}
catch (Throwable x)
{
LOG.warn("Accept failed",x);
}
}
private void closeNoExceptions(Closeable closeable) private void closeNoExceptions(Closeable closeable)
{ {
try try
@ -723,6 +771,31 @@ public abstract class SelectorManager extends AbstractLifeCycle implements Dumpa
} }
} }
private class Acceptor implements Runnable
{
private final ServerSocketChannel _channel;
public Acceptor(ServerSocketChannel channel)
{
this._channel = channel;
}
@Override
public void run()
{
try
{
SelectionKey key = _channel.register(_selector, SelectionKey.OP_ACCEPT, null);
LOG.debug("{} acceptor={}",this,key);
}
catch (Throwable x)
{
closeNoExceptions(_channel);
LOG.warn(x);
}
}
}
private class Accept implements Runnable private class Accept implements Runnable
{ {
private final SocketChannel _channel; private final SocketChannel _channel;

View File

@ -21,6 +21,7 @@ package org.eclipse.jetty.io;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import java.io.Writer; import java.io.Writer;
import java.nio.charset.Charset;
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */
@ -33,14 +34,14 @@ import java.io.Writer;
public class WriterOutputStream extends OutputStream public class WriterOutputStream extends OutputStream
{ {
protected final Writer _writer; protected final Writer _writer;
protected final String _encoding; protected final Charset _encoding;
private final byte[] _buf=new byte[1]; private final byte[] _buf=new byte[1];
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */
public WriterOutputStream(Writer writer, String encoding) public WriterOutputStream(Writer writer, String encoding)
{ {
_writer=writer; _writer=writer;
_encoding=encoding; _encoding=encoding==null?null:Charset.forName(encoding);
} }
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */

View File

@ -21,6 +21,7 @@ package org.eclipse.jetty.io.ssl;
import java.io.IOException; import java.io.IOException;
import java.util.Map; import java.util.Map;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import javax.net.ssl.SSLEngine; import javax.net.ssl.SSLEngine;
import org.eclipse.jetty.io.ByteBufferPool; import org.eclipse.jetty.io.ByteBufferPool;

View File

@ -23,6 +23,7 @@ import java.nio.ByteBuffer;
import java.nio.channels.ClosedChannelException; import java.nio.channels.ClosedChannelException;
import java.util.Arrays; import java.util.Arrays;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import javax.net.ssl.SSLEngine; import javax.net.ssl.SSLEngine;
import javax.net.ssl.SSLEngineResult; import javax.net.ssl.SSLEngineResult;
import javax.net.ssl.SSLEngineResult.HandshakeStatus; import javax.net.ssl.SSLEngineResult.HandshakeStatus;

View File

@ -29,13 +29,13 @@ import java.io.IOException;
import java.net.InetSocketAddress; import java.net.InetSocketAddress;
import java.net.ServerSocket; import java.net.ServerSocket;
import java.net.Socket; import java.net.Socket;
import java.net.SocketAddress;
import java.net.SocketException; import java.net.SocketException;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.channels.AsynchronousServerSocketChannel; import java.nio.channels.AsynchronousServerSocketChannel;
import java.nio.channels.AsynchronousSocketChannel; import java.nio.channels.AsynchronousSocketChannel;
import java.nio.channels.ServerSocketChannel; import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel; import java.nio.channels.SocketChannel;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Future; import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -49,15 +49,13 @@ import org.junit.Test;
public class IOTest public class IOTest
{ {
@Test @Test
public void testIO() throws InterruptedException public void testIO() throws Exception
{ {
// Only a little test // Only a little test
ByteArrayInputStream in = new ByteArrayInputStream("The quick brown fox jumped over the lazy dog".getBytes()); ByteArrayInputStream in = new ByteArrayInputStream("The quick brown fox jumped over the lazy dog".getBytes());
ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayOutputStream out = new ByteArrayOutputStream();
IO.copyThread(in, out); IO.copy(in, out);
Thread.sleep(1500);
// System.err.println(out);
assertEquals("copyThread", out.toString(), "The quick brown fox jumped over the lazy dog"); assertEquals("copyThread", out.toString(), "The quick brown fox jumped over the lazy dog");
} }
@ -444,7 +442,7 @@ public class IOTest
ByteBuffer read = ByteBuffer.allocate(1024); ByteBuffer read = ByteBuffer.allocate(1024);
Future<Integer> reading = server.read(read); Future<Integer> reading = server.read(read);
byte[] data = "Testing 1 2 3".getBytes("UTF-8"); byte[] data = "Testing 1 2 3".getBytes(StandardCharsets.UTF_8);
ByteBuffer write = BufferUtil.toBuffer(data); ByteBuffer write = BufferUtil.toBuffer(data);
Future<Integer> writing = client.write(write); Future<Integer> writing = client.write(write);

View File

@ -22,6 +22,7 @@ package org.eclipse.jetty.io;
import java.util.concurrent.TimeoutException; import java.util.concurrent.TimeoutException;
import junit.framework.Assert; import junit.framework.Assert;
import org.eclipse.jetty.util.thread.TimerScheduler; import org.eclipse.jetty.util.thread.TimerScheduler;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;

View File

@ -18,11 +18,17 @@
package org.eclipse.jetty.io; package org.eclipse.jetty.io;
import static org.hamcrest.Matchers.greaterThan;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.net.Socket; import java.net.Socket;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel; import java.nio.channels.SocketChannel;
import java.nio.charset.StandardCharsets;
import javax.net.ssl.SSLEngine; import javax.net.ssl.SSLEngine;
import javax.net.ssl.SSLEngineResult; import javax.net.ssl.SSLEngineResult;
import javax.net.ssl.SSLEngineResult.HandshakeStatus; import javax.net.ssl.SSLEngineResult.HandshakeStatus;
@ -39,10 +45,6 @@ import org.junit.BeforeClass;
import org.junit.Ignore; import org.junit.Ignore;
import org.junit.Test; import org.junit.Test;
import static org.hamcrest.Matchers.greaterThan;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
public class SelectChannelEndPointSslTest extends SelectChannelEndPointTest public class SelectChannelEndPointSslTest extends SelectChannelEndPointTest
{ {
@ -170,7 +172,7 @@ public class SelectChannelEndPointSslTest extends SelectChannelEndPointTest
if (debug) System.err.println("\nSay Hello"); if (debug) System.err.println("\nSay Hello");
// write a message // write a message
appOut.put("HelloWorld".getBytes("UTF-8")); appOut.put("HelloWorld".getBytes(StandardCharsets.UTF_8));
appOut.flip(); appOut.flip();
SSLEngineResult result =engine.wrap(appOut,sslOut); SSLEngineResult result =engine.wrap(appOut,sslOut);
if (debug) System.err.println(result); if (debug) System.err.println(result);

View File

@ -18,6 +18,12 @@
package org.eclipse.jetty.io; package org.eclipse.jetty.io;
import static org.hamcrest.Matchers.greaterThan;
import static org.hamcrest.Matchers.greaterThanOrEqualTo;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.io.BufferedInputStream; import java.io.BufferedInputStream;
import java.io.BufferedOutputStream; import java.io.BufferedOutputStream;
import java.io.IOException; import java.io.IOException;
@ -29,13 +35,13 @@ import java.nio.ByteBuffer;
import java.nio.channels.SelectionKey; import java.nio.channels.SelectionKey;
import java.nio.channels.ServerSocketChannel; import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel; import java.nio.channels.SocketChannel;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import org.eclipse.jetty.util.BufferUtil; import org.eclipse.jetty.util.BufferUtil;
import org.eclipse.jetty.util.FutureCallback; import org.eclipse.jetty.util.FutureCallback;
import org.eclipse.jetty.util.StringUtil;
import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.util.log.Logger;
import org.eclipse.jetty.util.thread.QueuedThreadPool; import org.eclipse.jetty.util.thread.QueuedThreadPool;
@ -46,12 +52,6 @@ import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import static org.hamcrest.Matchers.greaterThan;
import static org.hamcrest.Matchers.greaterThanOrEqualTo;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class SelectChannelEndPointTest public class SelectChannelEndPointTest
{ {
private static final Logger LOG = Log.getLogger(SelectChannelEndPointTest.class); private static final Logger LOG = Log.getLogger(SelectChannelEndPointTest.class);
@ -228,7 +228,7 @@ public class SelectChannelEndPointTest
_manager.accept(server); _manager.accept(server);
// Write client to server // Write client to server
client.getOutputStream().write("HelloWorld".getBytes("UTF-8")); client.getOutputStream().write("HelloWorld".getBytes(StandardCharsets.UTF_8));
// Verify echo server to client // Verify echo server to client
for (char c : "HelloWorld".toCharArray()) for (char c : "HelloWorld".toCharArray())
@ -253,7 +253,7 @@ public class SelectChannelEndPointTest
} }
// write then shutdown // write then shutdown
client.getOutputStream().write("Goodbye Cruel TLS".getBytes("UTF-8")); client.getOutputStream().write("Goodbye Cruel TLS".getBytes(StandardCharsets.UTF_8));
// Verify echo server to client // Verify echo server to client
for (char c : "Goodbye Cruel TLS".toCharArray()) for (char c : "Goodbye Cruel TLS".toCharArray())
@ -287,7 +287,7 @@ public class SelectChannelEndPointTest
_manager.accept(server); _manager.accept(server);
// Write client to server // Write client to server
client.getOutputStream().write("HelloWorld".getBytes("UTF-8")); client.getOutputStream().write("HelloWorld".getBytes(StandardCharsets.UTF_8));
// Verify echo server to client // Verify echo server to client
for (char c : "HelloWorld".toCharArray()) for (char c : "HelloWorld".toCharArray())
@ -310,7 +310,7 @@ public class SelectChannelEndPointTest
} }
// write then shutdown // write then shutdown
client.getOutputStream().write("Goodbye Cruel TLS".getBytes("UTF-8")); client.getOutputStream().write("Goodbye Cruel TLS".getBytes(StandardCharsets.UTF_8));
client.shutdownOutput(); client.shutdownOutput();
// Verify echo server to client // Verify echo server to client
@ -343,7 +343,7 @@ public class SelectChannelEndPointTest
// Write 8 and cause block waiting for 10 // Write 8 and cause block waiting for 10
_blockAt = 10; _blockAt = 10;
clientOutputStream.write("12345678".getBytes("UTF-8")); clientOutputStream.write("12345678".getBytes(StandardCharsets.UTF_8));
clientOutputStream.flush(); clientOutputStream.flush();
Assert.assertTrue(_lastEndPointLatch.await(1, TimeUnit.SECONDS)); Assert.assertTrue(_lastEndPointLatch.await(1, TimeUnit.SECONDS));
@ -363,7 +363,7 @@ public class SelectChannelEndPointTest
} }
// write remaining characters // write remaining characters
clientOutputStream.write("90ABCDEF".getBytes("UTF-8")); clientOutputStream.write("90ABCDEF".getBytes(StandardCharsets.UTF_8));
clientOutputStream.flush(); clientOutputStream.flush();
// Verify echo server to client // Verify echo server to client
@ -388,7 +388,7 @@ public class SelectChannelEndPointTest
_manager.accept(server); _manager.accept(server);
// Write client to server // Write client to server
client.getOutputStream().write("HelloWorld".getBytes("UTF-8")); client.getOutputStream().write("HelloWorld".getBytes(StandardCharsets.UTF_8));
// Verify echo server to client // Verify echo server to client
for (char c : "HelloWorld".toCharArray()) for (char c : "HelloWorld".toCharArray())
@ -436,7 +436,7 @@ public class SelectChannelEndPointTest
_manager.accept(server); _manager.accept(server);
// Write client to server // Write client to server
clientOutputStream.write("HelloWorld".getBytes("UTF-8")); clientOutputStream.write("HelloWorld".getBytes(StandardCharsets.UTF_8));
// Verify echo server to client // Verify echo server to client
for (char c : "HelloWorld".toCharArray()) for (char c : "HelloWorld".toCharArray())
@ -452,7 +452,7 @@ public class SelectChannelEndPointTest
// Write 8 and cause block waiting for 10 // Write 8 and cause block waiting for 10
_blockAt = 10; _blockAt = 10;
clientOutputStream.write("12345678".getBytes("UTF-8")); clientOutputStream.write("12345678".getBytes(StandardCharsets.UTF_8));
clientOutputStream.flush(); clientOutputStream.flush();
// read until idle shutdown received // read until idle shutdown received
@ -493,8 +493,8 @@ public class SelectChannelEndPointTest
_manager.accept(server); _manager.accept(server);
final int writes = 200000; final int writes = 200000;
final byte[] bytes = "HelloWorld-".getBytes(StringUtil.__UTF8_CHARSET); final byte[] bytes = "HelloWorld-".getBytes(StandardCharsets.UTF_8);
byte[] count = "0\n".getBytes(StringUtil.__UTF8_CHARSET); byte[] count = "0\n".getBytes(StandardCharsets.UTF_8);
BufferedOutputStream out = new BufferedOutputStream(client.getOutputStream()); BufferedOutputStream out = new BufferedOutputStream(client.getOutputStream());
final CountDownLatch latch = new CountDownLatch(writes); final CountDownLatch latch = new CountDownLatch(writes);
final InputStream in = new BufferedInputStream(client.getInputStream()); final InputStream in = new BufferedInputStream(client.getInputStream());
@ -561,7 +561,7 @@ public class SelectChannelEndPointTest
for (int i = 1; i < writes; i++) for (int i = 1; i < writes; i++)
{ {
out.write(bytes); out.write(bytes);
out.write(Integer.toString(i).getBytes(StringUtil.__ISO_8859_1_CHARSET)); out.write(Integer.toString(i).getBytes(StandardCharsets.ISO_8859_1));
out.write('\n'); out.write('\n');
if (i % 1000 == 0) if (i % 1000 == 0)
{ {
@ -599,7 +599,7 @@ public class SelectChannelEndPointTest
// Write client to server // Write client to server
_writeCount = 10000; _writeCount = 10000;
String data = "Now is the time for all good men to come to the aid of the party"; String data = "Now is the time for all good men to come to the aid of the party";
client.getOutputStream().write(data.getBytes("UTF-8")); client.getOutputStream().write(data.getBytes(StandardCharsets.UTF_8));
BufferedInputStream in = new BufferedInputStream(client.getInputStream()); BufferedInputStream in = new BufferedInputStream(client.getInputStream());
int byteNum = 0; int byteNum = 0;

View File

@ -27,9 +27,11 @@ import java.nio.ByteBuffer;
import java.nio.channels.SelectionKey; import java.nio.channels.SelectionKey;
import java.nio.channels.ServerSocketChannel; import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel; import java.nio.channels.SocketChannel;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import javax.net.ssl.SSLEngine; import javax.net.ssl.SSLEngine;
import javax.net.ssl.SSLSocket; import javax.net.ssl.SSLSocket;
@ -37,7 +39,6 @@ import org.eclipse.jetty.io.ssl.SslConnection;
import org.eclipse.jetty.toolchain.test.MavenTestingUtils; import org.eclipse.jetty.toolchain.test.MavenTestingUtils;
import org.eclipse.jetty.util.BufferUtil; import org.eclipse.jetty.util.BufferUtil;
import org.eclipse.jetty.util.FutureCallback; import org.eclipse.jetty.util.FutureCallback;
import org.eclipse.jetty.util.StringUtil;
import org.eclipse.jetty.util.ssl.SslContextFactory; import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.eclipse.jetty.util.thread.QueuedThreadPool; import org.eclipse.jetty.util.thread.QueuedThreadPool;
import org.eclipse.jetty.util.thread.Scheduler; import org.eclipse.jetty.util.thread.Scheduler;
@ -61,12 +62,11 @@ public class SslConnectionTest
final AtomicInteger _dispatches = new AtomicInteger(); final AtomicInteger _dispatches = new AtomicInteger();
protected QueuedThreadPool _threadPool = new QueuedThreadPool() protected QueuedThreadPool _threadPool = new QueuedThreadPool()
{ {
@Override @Override
public boolean dispatch(Runnable job) public void execute(Runnable job)
{ {
_dispatches.incrementAndGet(); _dispatches.incrementAndGet();
return super.dispatch(job); super.execute(job);
} }
}; };
@ -234,14 +234,14 @@ public class SslConnectionTest
server.configureBlocking(false); server.configureBlocking(false);
_manager.accept(server); _manager.accept(server);
client.getOutputStream().write("Hello".getBytes("UTF-8")); client.getOutputStream().write("Hello".getBytes(StandardCharsets.UTF_8));
byte[] buffer = new byte[1024]; byte[] buffer = new byte[1024];
int len=client.getInputStream().read(buffer); int len=client.getInputStream().read(buffer);
Assert.assertEquals(5, len); Assert.assertEquals(5, len);
Assert.assertEquals("Hello",new String(buffer,0,len,StringUtil.__UTF8_CHARSET)); Assert.assertEquals("Hello",new String(buffer,0,len,StandardCharsets.UTF_8));
_dispatches.set(0); _dispatches.set(0);
client.getOutputStream().write("World".getBytes("UTF-8")); client.getOutputStream().write("World".getBytes(StandardCharsets.UTF_8));
len=5; len=5;
while(len>0) while(len>0)
len-=client.getInputStream().read(buffer); len-=client.getInputStream().read(buffer);
@ -266,7 +266,7 @@ public class SslConnectionTest
byte[] buffer = new byte[1024]; byte[] buffer = new byte[1024];
int len=client.getInputStream().read(buffer); int len=client.getInputStream().read(buffer);
Assert.assertEquals("Hello Client",new String(buffer,0,len,StringUtil.__UTF8_CHARSET)); Assert.assertEquals("Hello Client",new String(buffer,0,len,StandardCharsets.UTF_8));
Assert.assertEquals(null,_writeCallback.get(100,TimeUnit.MILLISECONDS)); Assert.assertEquals(null,_writeCallback.get(100,TimeUnit.MILLISECONDS));
client.close(); client.close();
} }
@ -292,7 +292,7 @@ public class SslConnectionTest
{ {
try try
{ {
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream(),StringUtil.__UTF8_CHARSET)); BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream(),StandardCharsets.UTF_8));
while(count.getCount()>0) while(count.getCount()>0)
{ {
String line=in.readLine(); String line=in.readLine();
@ -311,7 +311,7 @@ public class SslConnectionTest
for (int i=0;i<LINES;i++) for (int i=0;i<LINES;i++)
{ {
client.getOutputStream().write(("HelloWorld "+i+"\n").getBytes("UTF-8")); client.getOutputStream().write(("HelloWorld "+i+"\n").getBytes(StandardCharsets.UTF_8));
// System.err.println("wrote"); // System.err.println("wrote");
if (i%1000==0) if (i%1000==0)
{ {

View File

@ -18,6 +18,15 @@
package org.eclipse.jetty.io; package org.eclipse.jetty.io;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.when;
import java.io.IOException; import java.io.IOException;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.channels.WritePendingException; import java.nio.channels.WritePendingException;
@ -46,15 +55,6 @@ import org.mockito.invocation.InvocationOnMock;
import org.mockito.runners.MockitoJUnitRunner; import org.mockito.runners.MockitoJUnitRunner;
import org.mockito.stubbing.Answer; import org.mockito.stubbing.Answer;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class) @RunWith(MockitoJUnitRunner.class)
public class WriteFlusherTest public class WriteFlusherTest
{ {

View File

@ -19,6 +19,7 @@
package org.eclipse.jetty.security.jaspi.modules; package org.eclipse.jetty.security.jaspi.modules;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@ -41,7 +42,6 @@ import org.eclipse.jetty.security.authentication.LoginCallbackImpl;
import org.eclipse.jetty.security.jaspi.JaspiMessageInfo; import org.eclipse.jetty.security.jaspi.JaspiMessageInfo;
import org.eclipse.jetty.security.jaspi.callback.CredentialValidationCallback; import org.eclipse.jetty.security.jaspi.callback.CredentialValidationCallback;
import org.eclipse.jetty.util.B64Code; import org.eclipse.jetty.util.B64Code;
import org.eclipse.jetty.util.StringUtil;
import org.eclipse.jetty.util.security.Credential; import org.eclipse.jetty.util.security.Credential;
import org.eclipse.jetty.util.security.Password; import org.eclipse.jetty.util.security.Password;
@ -119,7 +119,7 @@ public class BaseAuthModule implements ServerAuthModule, ServerAuthContext
throws IOException, UnsupportedCallbackException throws IOException, UnsupportedCallbackException
{ {
credentials = credentials.substring(credentials.indexOf(' ')+1); credentials = credentials.substring(credentials.indexOf(' ')+1);
credentials = B64Code.decode(credentials,StringUtil.__ISO_8859_1); credentials = B64Code.decode(credentials, StandardCharsets.ISO_8859_1);
int i = credentials.indexOf(':'); int i = credentials.indexOf(':');
String userName = credentials.substring(0,i); String userName = credentials.substring(0,i);
String password = credentials.substring(i+1); String password = credentials.substring(i+1);

View File

@ -19,6 +19,7 @@
package org.eclipse.jetty.security.jaspi.modules; package org.eclipse.jetty.security.jaspi.modules;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.util.Map; import java.util.Map;
@ -35,7 +36,6 @@ import javax.servlet.http.HttpServletResponse;
import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.HttpHeader;
import org.eclipse.jetty.util.B64Code; import org.eclipse.jetty.util.B64Code;
import org.eclipse.jetty.util.QuotedStringTokenizer; import org.eclipse.jetty.util.QuotedStringTokenizer;
import org.eclipse.jetty.util.StringUtil;
import org.eclipse.jetty.util.TypeUtil; import org.eclipse.jetty.util.TypeUtil;
import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.util.log.Logger;
@ -306,18 +306,18 @@ public class DigestAuthModule extends BaseAuthModule
else else
{ {
// calc A1 digest // calc A1 digest
md.update(username.getBytes(StringUtil.__ISO_8859_1)); md.update(username.getBytes(StandardCharsets.ISO_8859_1));
md.update((byte) ':'); md.update((byte) ':');
md.update(realm.getBytes(StringUtil.__ISO_8859_1)); md.update(realm.getBytes(StandardCharsets.ISO_8859_1));
md.update((byte) ':'); md.update((byte) ':');
md.update(password.getBytes(StringUtil.__ISO_8859_1)); md.update(password.getBytes(StandardCharsets.ISO_8859_1));
ha1 = md.digest(); ha1 = md.digest();
} }
// calc A2 digest // calc A2 digest
md.reset(); md.reset();
md.update(method.getBytes(StringUtil.__ISO_8859_1)); md.update(method.getBytes(StandardCharsets.ISO_8859_1));
md.update((byte) ':'); md.update((byte) ':');
md.update(uri.getBytes(StringUtil.__ISO_8859_1)); md.update(uri.getBytes(StandardCharsets.ISO_8859_1));
byte[] ha2 = md.digest(); byte[] ha2 = md.digest();
// calc digest // calc digest
@ -327,17 +327,17 @@ public class DigestAuthModule extends BaseAuthModule
// request-digest = <"> < KD ( H(A1), unq(nonce-value) ":" H(A2) // request-digest = <"> < KD ( H(A1), unq(nonce-value) ":" H(A2)
// ) > <"> // ) > <">
md.update(TypeUtil.toString(ha1, 16).getBytes(StringUtil.__ISO_8859_1)); md.update(TypeUtil.toString(ha1, 16).getBytes(StandardCharsets.ISO_8859_1));
md.update((byte) ':'); md.update((byte) ':');
md.update(nonce.getBytes(StringUtil.__ISO_8859_1)); md.update(nonce.getBytes(StandardCharsets.ISO_8859_1));
md.update((byte) ':'); md.update((byte) ':');
md.update(nc.getBytes(StringUtil.__ISO_8859_1)); md.update(nc.getBytes(StandardCharsets.ISO_8859_1));
md.update((byte) ':'); md.update((byte) ':');
md.update(cnonce.getBytes(StringUtil.__ISO_8859_1)); md.update(cnonce.getBytes(StandardCharsets.ISO_8859_1));
md.update((byte) ':'); md.update((byte) ':');
md.update(qop.getBytes(StringUtil.__ISO_8859_1)); md.update(qop.getBytes(StandardCharsets.ISO_8859_1));
md.update((byte) ':'); md.update((byte) ':');
md.update(TypeUtil.toString(ha2, 16).getBytes(StringUtil.__ISO_8859_1)); md.update(TypeUtil.toString(ha2, 16).getBytes(StandardCharsets.ISO_8859_1));
byte[] digest = md.digest(); byte[] digest = md.digest();
// check digest // check digest

View File

@ -19,7 +19,6 @@
package org.eclipse.jetty.jmx; package org.eclipse.jetty.jmx;
import java.io.IOException; import java.io.IOException;
import java.util.HashMap;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.WeakHashMap; import java.util.WeakHashMap;

View File

@ -20,7 +20,6 @@ package org.eclipse.jetty.jndi.java;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail; import static org.junit.Assert.fail;
@ -47,11 +46,9 @@ import javax.servlet.ServletContextListener;
import org.eclipse.jetty.jndi.NamingContext; import org.eclipse.jetty.jndi.NamingContext;
import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.ContextHandler; import org.eclipse.jetty.server.handler.ContextHandler;
import org.eclipse.jetty.server.handler.ContextHandlerCollection;
import org.eclipse.jetty.server.handler.HandlerList; import org.eclipse.jetty.server.handler.HandlerList;
import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.util.log.Logger;
import org.junit.Ignore;
import org.junit.Test; import org.junit.Test;
/** /**
* *

View File

@ -20,13 +20,11 @@
package org.eclipse.jetty.maven.plugin; package org.eclipse.jetty.maven.plugin;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import org.codehaus.plexus.util.xml.Xpp3Dom; import org.codehaus.plexus.util.xml.Xpp3Dom;
import org.apache.maven.artifact.Artifact;
import java.util.Arrays;
/** /**
* OverlayConfig * OverlayConfig

View File

@ -20,8 +20,6 @@ package org.eclipse.jetty.plus.annotation;
import java.util.HashMap; import java.util.HashMap;
import javax.servlet.ServletException;
import org.eclipse.jetty.servlet.ServletHolder; import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.util.log.Logger;

View File

@ -18,8 +18,6 @@
package org.eclipse.jetty.plus.webapp; package org.eclipse.jetty.plus.webapp;
import javax.servlet.ServletException;
import org.eclipse.jetty.plus.annotation.InjectionCollection; import org.eclipse.jetty.plus.annotation.InjectionCollection;
import org.eclipse.jetty.plus.annotation.LifeCycleCallbackCollection; import org.eclipse.jetty.plus.annotation.LifeCycleCallbackCollection;
import org.eclipse.jetty.plus.annotation.RunAsCollection; import org.eclipse.jetty.plus.annotation.RunAsCollection;

View File

@ -28,6 +28,7 @@ import java.util.Set;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import javax.servlet.AsyncContext; import javax.servlet.AsyncContext;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;

View File

@ -31,6 +31,7 @@ import java.util.Set;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException; import java.util.concurrent.TimeoutException;
import javax.servlet.AsyncContext; import javax.servlet.AsyncContext;
import javax.servlet.ServletConfig; import javax.servlet.ServletConfig;
import javax.servlet.ServletContext; import javax.servlet.ServletContext;

View File

@ -32,7 +32,6 @@ import javax.servlet.http.HttpServletResponse;
import org.eclipse.jetty.client.HttpClient; import org.eclipse.jetty.client.HttpClient;
import org.eclipse.jetty.client.api.ContentResponse; import org.eclipse.jetty.client.api.ContentResponse;
import org.eclipse.jetty.server.NetworkConnector;
import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.server.session.AbstractSessionIdManager; import org.eclipse.jetty.server.session.AbstractSessionIdManager;

View File

@ -25,6 +25,7 @@ import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.OutputStream; import java.io.OutputStream;
import java.net.Socket; import java.net.Socket;
import java.nio.charset.StandardCharsets;
import javax.net.ssl.SSLContext; import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocket; import javax.net.ssl.SSLSocket;
@ -78,7 +79,7 @@ public class ConnectHandlerSSLTest extends AbstractConnectHandlerTest
OutputStream output = socket.getOutputStream(); OutputStream output = socket.getOutputStream();
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
// Expect 200 OK from the CONNECT request // Expect 200 OK from the CONNECT request
@ -98,7 +99,7 @@ public class ConnectHandlerSSLTest extends AbstractConnectHandlerTest
"GET /echo HTTP/1.1\r\n" + "GET /echo HTTP/1.1\r\n" +
"Host: " + hostPort + "\r\n" + "Host: " + hostPort + "\r\n" +
"\r\n"; "\r\n";
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
response = readResponse(input); response = readResponse(input);
@ -121,7 +122,7 @@ public class ConnectHandlerSSLTest extends AbstractConnectHandlerTest
OutputStream output = socket.getOutputStream(); OutputStream output = socket.getOutputStream();
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
// Expect 200 OK from the CONNECT request // Expect 200 OK from the CONNECT request
@ -145,7 +146,7 @@ public class ConnectHandlerSSLTest extends AbstractConnectHandlerTest
"Content-Length: 5\r\n" + "Content-Length: 5\r\n" +
"\r\n" + "\r\n" +
"HELLO"; "HELLO";
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
response = readResponse(input); response = readResponse(input);

View File

@ -27,6 +27,7 @@ import java.io.OutputStream;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.Socket; import java.net.Socket;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import java.nio.charset.StandardCharsets;
import java.util.Locale; import java.util.Locale;
import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ConcurrentMap;
@ -71,7 +72,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
OutputStream output = socket.getOutputStream(); OutputStream output = socket.getOutputStream();
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
// Expect 200 OK from the CONNECT request // Expect 200 OK from the CONNECT request
@ -93,7 +94,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
OutputStream output = socket.getOutputStream(); OutputStream output = socket.getOutputStream();
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
// Expect 200 OK from the CONNECT request // Expect 200 OK from the CONNECT request
@ -104,7 +105,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
"GET /echo" + " HTTP/1.1\r\n" + "GET /echo" + " HTTP/1.1\r\n" +
"Host: " + hostPort + "\r\n" + "Host: " + hostPort + "\r\n" +
"\r\n"; "\r\n";
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
response = readResponse(input); response = readResponse(input);
@ -130,7 +131,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
OutputStream output = socket.getOutputStream(); OutputStream output = socket.getOutputStream();
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
// Expect 403 from the CONNECT request // Expect 403 from the CONNECT request
@ -151,7 +152,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
OutputStream output = socket.getOutputStream(); OutputStream output = socket.getOutputStream();
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
// Expect 200 from the CONNECT request // Expect 200 from the CONNECT request
@ -162,7 +163,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
"GET /echo" + " HTTP/1.1\r\n" + "GET /echo" + " HTTP/1.1\r\n" +
"Host: " + hostPort + "\r\n" + "Host: " + hostPort + "\r\n" +
"\r\n"; "\r\n";
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
response = readResponse(input); response = readResponse(input);
@ -188,7 +189,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
OutputStream output = socket.getOutputStream(); OutputStream output = socket.getOutputStream();
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
// Expect 403 from the CONNECT request // Expect 403 from the CONNECT request
@ -209,7 +210,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
OutputStream output = socket.getOutputStream(); OutputStream output = socket.getOutputStream();
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
// Expect 200 from the CONNECT request // Expect 200 from the CONNECT request
@ -220,7 +221,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
"GET /echo" + " HTTP/1.1\r\n" + "GET /echo" + " HTTP/1.1\r\n" +
"Host: 127.0.0.1:" + port + "\r\n" + "Host: 127.0.0.1:" + port + "\r\n" +
"\r\n"; "\r\n";
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
response = readResponse(input); response = readResponse(input);
@ -245,7 +246,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
return false; return false;
} }
String b64 = proxyAuthorization.substring("Basic ".length()); String b64 = proxyAuthorization.substring("Basic ".length());
String credentials = B64Code.decode(b64, "UTF-8"); String credentials = B64Code.decode(b64, StandardCharsets.UTF_8);
return "test:test".equals(credentials); return "test:test".equals(credentials);
} }
}; };
@ -265,7 +266,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
OutputStream output = socket.getOutputStream(); OutputStream output = socket.getOutputStream();
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
// Expect 407 from the CONNECT request // Expect 407 from the CONNECT request
@ -289,7 +290,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
OutputStream output = socket.getOutputStream(); OutputStream output = socket.getOutputStream();
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
// Expect 200 from the CONNECT request // Expect 200 from the CONNECT request
@ -300,7 +301,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
"GET /echo" + " HTTP/1.1\r\n" + "GET /echo" + " HTTP/1.1\r\n" +
"Host: " + hostPort + "\r\n" + "Host: " + hostPort + "\r\n" +
"\r\n"; "\r\n";
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
response = readResponse(input); response = readResponse(input);
@ -342,7 +343,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
OutputStream output = socket.getOutputStream(); OutputStream output = socket.getOutputStream();
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
// Expect 500 OK from the CONNECT request // Expect 500 OK from the CONNECT request
@ -368,7 +369,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
OutputStream output = socket.getOutputStream(); OutputStream output = socket.getOutputStream();
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
// Expect 200 OK from the CONNECT request // Expect 200 OK from the CONNECT request
@ -379,7 +380,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
"GET /echo" + " HTTP/1.1\r\n" + "GET /echo" + " HTTP/1.1\r\n" +
"Host: " + hostPort + "\r\n" + "Host: " + hostPort + "\r\n" +
"\r\n"; "\r\n";
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
response = readResponse(input); response = readResponse(input);
@ -404,7 +405,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
OutputStream output = socket.getOutputStream(); OutputStream output = socket.getOutputStream();
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
// Expect 200 OK from the CONNECT request // Expect 200 OK from the CONNECT request
@ -431,7 +432,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
OutputStream output = socket.getOutputStream(); OutputStream output = socket.getOutputStream();
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
// Expect 200 OK from the CONNECT request // Expect 200 OK from the CONNECT request
@ -444,7 +445,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
"GET /echo" + " HTTP/1.1\r\n" + "GET /echo" + " HTTP/1.1\r\n" +
"Host: " + hostPort + "\r\n" + "Host: " + hostPort + "\r\n" +
"\r\n"; "\r\n";
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
response = readResponse(input); response = readResponse(input);
@ -467,7 +468,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
OutputStream output = socket.getOutputStream(); OutputStream output = socket.getOutputStream();
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
// Expect 200 OK from the CONNECT request // Expect 200 OK from the CONNECT request
@ -478,7 +479,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
"GET /echo HTTP/1.1\r\n" + "GET /echo HTTP/1.1\r\n" +
"Host: " + hostPort + "\r\n" + "Host: " + hostPort + "\r\n" +
"\r\n"; "\r\n";
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
response = readResponse(input); response = readResponse(input);
@ -506,7 +507,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
OutputStream output = socket.getOutputStream(); OutputStream output = socket.getOutputStream();
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
// Expect 200 OK from the CONNECT request // Expect 200 OK from the CONNECT request
@ -517,7 +518,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
"GET /close HTTP/1.1\r\n" + "GET /close HTTP/1.1\r\n" +
"Host: " + hostPort + "\r\n" + "Host: " + hostPort + "\r\n" +
"\r\n"; "\r\n";
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
int read = input.read(); int read = input.read();
@ -538,7 +539,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
OutputStream output = socket.getOutputStream(); OutputStream output = socket.getOutputStream();
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
// Expect 200 OK from the CONNECT request // Expect 200 OK from the CONNECT request
@ -551,7 +552,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
"Content-Length: 5\r\n" + "Content-Length: 5\r\n" +
"\r\n" + "\r\n" +
"HELLO"; "HELLO";
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
response = readResponse(input); response = readResponse(input);
@ -562,7 +563,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
"GET /echo" + " HTTP/1.1\r\n" + "GET /echo" + " HTTP/1.1\r\n" +
"Host: " + hostPort + "\r\n" + "Host: " + hostPort + "\r\n" +
"\r\n"; "\r\n";
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
response = readResponse(input); response = readResponse(input);
@ -585,7 +586,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
OutputStream output = socket.getOutputStream(); OutputStream output = socket.getOutputStream();
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
// Expect 200 OK from the CONNECT request // Expect 200 OK from the CONNECT request
@ -603,7 +604,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
"Content-Length: " + body.length() + "\r\n" + "Content-Length: " + body.length() + "\r\n" +
"\r\n" + "\r\n" +
body; body;
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
response = readResponse(input); response = readResponse(input);
@ -649,7 +650,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
OutputStream output = socket.getOutputStream(); OutputStream output = socket.getOutputStream();
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
// Expect 200 OK from the CONNECT request // Expect 200 OK from the CONNECT request
@ -663,7 +664,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
"Content-Length: " + body.length() + "\r\n" + "Content-Length: " + body.length() + "\r\n" +
"\r\n" + "\r\n" +
body; body;
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
response = readResponse(input); response = readResponse(input);
@ -688,7 +689,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
OutputStream output = socket.getOutputStream(); OutputStream output = socket.getOutputStream();
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
socket.shutdownOutput(); socket.shutdownOutput();
@ -716,7 +717,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
OutputStream output = socket.getOutputStream(); OutputStream output = socket.getOutputStream();
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
// Expect 200 OK from the CONNECT request // Expect 200 OK from the CONNECT request
@ -727,7 +728,7 @@ public class ConnectHandlerTest extends AbstractConnectHandlerTest
"GET /echo" + " HTTP/1.1\r\n" + "GET /echo" + " HTTP/1.1\r\n" +
"Host: " + hostPort + "\r\n" + "Host: " + hostPort + "\r\n" +
"\r\n"; "\r\n";
output.write(request.getBytes("UTF-8")); output.write(request.getBytes(StandardCharsets.UTF_8));
output.flush(); output.flush();
socket.shutdownOutput(); socket.shutdownOutput();

View File

@ -18,6 +18,8 @@
package org.eclipse.jetty.proxy; package org.eclipse.jetty.proxy;
import static java.nio.file.StandardOpenOption.CREATE;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
@ -37,6 +39,7 @@ import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException; import java.util.concurrent.TimeoutException;
import java.util.zip.GZIPOutputStream; import java.util.zip.GZIPOutputStream;
import javax.servlet.AsyncContext; import javax.servlet.AsyncContext;
import javax.servlet.AsyncEvent; import javax.servlet.AsyncEvent;
import javax.servlet.AsyncListener; import javax.servlet.AsyncListener;
@ -76,8 +79,6 @@ import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import static java.nio.file.StandardOpenOption.CREATE;
@RunWith(AdvancedRunner.class) @RunWith(AdvancedRunner.class)
public class ProxyServletTest public class ProxyServletTest
{ {

View File

@ -18,6 +18,8 @@
package org.eclipse.jetty.proxy; package org.eclipse.jetty.proxy;
import static org.junit.Assert.assertEquals;
import java.io.IOException; import java.io.IOException;
import java.net.ConnectException; import java.net.ConnectException;
import java.net.Socket; import java.net.Socket;
@ -26,6 +28,7 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@ -61,8 +64,6 @@ import org.junit.Ignore;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class ProxyTunnellingTest public class ProxyTunnellingTest
{ {
@Rule @Rule

View File

@ -26,7 +26,6 @@ import javax.servlet.http.HttpServletResponse;
import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.HttpHeader;
import org.eclipse.jetty.http.HttpHeaderValue; import org.eclipse.jetty.http.HttpHeaderValue;
import org.eclipse.jetty.util.ArrayTernaryTrie; import org.eclipse.jetty.util.ArrayTernaryTrie;
import org.eclipse.jetty.util.StringMap;
import org.eclipse.jetty.util.Trie; import org.eclipse.jetty.util.Trie;
/** /**

View File

@ -19,6 +19,7 @@
package org.eclipse.jetty.rewrite.handler; package org.eclipse.jetty.rewrite.handler;
import java.io.IOException; import java.io.IOException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;

View File

@ -18,15 +18,15 @@
package org.eclipse.jetty.rewrite.handler; package org.eclipse.jetty.rewrite.handler;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import java.io.IOException; import java.io.IOException;
import org.eclipse.jetty.http.HttpURI; import org.eclipse.jetty.http.HttpURI;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
public class RewritePatternRuleTest extends AbstractRuleTestCase public class RewritePatternRuleTest extends AbstractRuleTestCase
{ {
private String[][] _tests = private String[][] _tests =

View File

@ -21,10 +21,10 @@ package org.eclipse.jetty.rewrite.handler;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.StandardCharsets;
import org.eclipse.jetty.http.HttpURI; import org.eclipse.jetty.http.HttpURI;
import org.eclipse.jetty.util.MultiMap; import org.eclipse.jetty.util.MultiMap;
import org.eclipse.jetty.util.StringUtil;
import org.eclipse.jetty.util.UrlEncoded; import org.eclipse.jetty.util.UrlEncoded;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@ -87,7 +87,7 @@ public class RewriteRegexRuleTest extends AbstractRuleTestCase
if (test[5]!=null) if (test[5]!=null)
{ {
MultiMap<String> params=new MultiMap<String>(); MultiMap<String> params=new MultiMap<String>();
UrlEncoded.decodeTo(test[5],params,StringUtil.__UTF8_CHARSET,-1); UrlEncoded.decodeTo(test[5],params, StandardCharsets.UTF_8,-1);
for (String n:params.keySet()) for (String n:params.keySet())
assertEquals(params.getString(n),_request.getParameter(n)); assertEquals(params.getString(n),_request.getParameter(n));

View File

@ -19,6 +19,7 @@
package org.eclipse.jetty.security.authentication; package org.eclipse.jetty.security.authentication;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.StandardCharsets;
import javax.servlet.ServletRequest; import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse; import javax.servlet.ServletResponse;
@ -32,7 +33,6 @@ import org.eclipse.jetty.server.Authentication;
import org.eclipse.jetty.server.Authentication.User; import org.eclipse.jetty.server.Authentication.User;
import org.eclipse.jetty.server.UserIdentity; import org.eclipse.jetty.server.UserIdentity;
import org.eclipse.jetty.util.B64Code; import org.eclipse.jetty.util.B64Code;
import org.eclipse.jetty.util.StringUtil;
import org.eclipse.jetty.util.security.Constraint; import org.eclipse.jetty.util.security.Constraint;
/** /**
@ -82,7 +82,7 @@ public class BasicAuthenticator extends LoginAuthenticator
if ("basic".equalsIgnoreCase(method)) if ("basic".equalsIgnoreCase(method))
{ {
credentials = credentials.substring(space+1); credentials = credentials.substring(space+1);
credentials = B64Code.decode(credentials,StringUtil.__ISO_8859_1); credentials = B64Code.decode(credentials, StandardCharsets.ISO_8859_1);
int i = credentials.indexOf(':'); int i = credentials.indexOf(':');
if (i>0) if (i>0)
{ {

View File

@ -19,6 +19,7 @@
package org.eclipse.jetty.security.authentication; package org.eclipse.jetty.security.authentication;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.security.SecureRandom; import java.security.SecureRandom;
import java.util.BitSet; import java.util.BitSet;
@ -42,7 +43,6 @@ import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.UserIdentity; import org.eclipse.jetty.server.UserIdentity;
import org.eclipse.jetty.util.B64Code; import org.eclipse.jetty.util.B64Code;
import org.eclipse.jetty.util.QuotedStringTokenizer; import org.eclipse.jetty.util.QuotedStringTokenizer;
import org.eclipse.jetty.util.StringUtil;
import org.eclipse.jetty.util.TypeUtil; import org.eclipse.jetty.util.TypeUtil;
import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.util.log.Logger;
@ -367,18 +367,18 @@ public class DigestAuthenticator extends LoginAuthenticator
else else
{ {
// calc A1 digest // calc A1 digest
md.update(username.getBytes(StringUtil.__ISO_8859_1)); md.update(username.getBytes(StandardCharsets.ISO_8859_1));
md.update((byte) ':'); md.update((byte) ':');
md.update(realm.getBytes(StringUtil.__ISO_8859_1)); md.update(realm.getBytes(StandardCharsets.ISO_8859_1));
md.update((byte) ':'); md.update((byte) ':');
md.update(password.getBytes(StringUtil.__ISO_8859_1)); md.update(password.getBytes(StandardCharsets.ISO_8859_1));
ha1 = md.digest(); ha1 = md.digest();
} }
// calc A2 digest // calc A2 digest
md.reset(); md.reset();
md.update(method.getBytes(StringUtil.__ISO_8859_1)); md.update(method.getBytes(StandardCharsets.ISO_8859_1));
md.update((byte) ':'); md.update((byte) ':');
md.update(uri.getBytes(StringUtil.__ISO_8859_1)); md.update(uri.getBytes(StandardCharsets.ISO_8859_1));
byte[] ha2 = md.digest(); byte[] ha2 = md.digest();
// calc digest // calc digest
@ -388,17 +388,17 @@ public class DigestAuthenticator extends LoginAuthenticator
// request-digest = <"> < KD ( H(A1), unq(nonce-value) ":" H(A2) // request-digest = <"> < KD ( H(A1), unq(nonce-value) ":" H(A2)
// ) > <"> // ) > <">
md.update(TypeUtil.toString(ha1, 16).getBytes(StringUtil.__ISO_8859_1)); md.update(TypeUtil.toString(ha1, 16).getBytes(StandardCharsets.ISO_8859_1));
md.update((byte) ':'); md.update((byte) ':');
md.update(nonce.getBytes(StringUtil.__ISO_8859_1)); md.update(nonce.getBytes(StandardCharsets.ISO_8859_1));
md.update((byte) ':'); md.update((byte) ':');
md.update(nc.getBytes(StringUtil.__ISO_8859_1)); md.update(nc.getBytes(StandardCharsets.ISO_8859_1));
md.update((byte) ':'); md.update((byte) ':');
md.update(cnonce.getBytes(StringUtil.__ISO_8859_1)); md.update(cnonce.getBytes(StandardCharsets.ISO_8859_1));
md.update((byte) ':'); md.update((byte) ':');
md.update(qop.getBytes(StringUtil.__ISO_8859_1)); md.update(qop.getBytes(StandardCharsets.ISO_8859_1));
md.update((byte) ':'); md.update((byte) ':');
md.update(TypeUtil.toString(ha2, 16).getBytes(StringUtil.__ISO_8859_1)); md.update(TypeUtil.toString(ha2, 16).getBytes(StandardCharsets.ISO_8859_1));
byte[] digest = md.digest(); byte[] digest = md.digest();
// check digest // check digest

View File

@ -24,7 +24,6 @@ import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import org.eclipse.jetty.security.Authenticator; import org.eclipse.jetty.security.Authenticator;
import org.eclipse.jetty.security.Authenticator.AuthConfiguration;
import org.eclipse.jetty.security.IdentityService; import org.eclipse.jetty.security.IdentityService;
import org.eclipse.jetty.security.LoginService; import org.eclipse.jetty.security.LoginService;
import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.Request;

View File

@ -27,6 +27,7 @@ import static org.junit.Assert.assertTrue;
import static org.junit.matchers.JUnitMatchers.containsString; import static org.junit.matchers.JUnitMatchers.containsString;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
@ -64,10 +65,8 @@ import org.eclipse.jetty.server.handler.ContextHandler;
import org.eclipse.jetty.server.handler.HandlerWrapper; import org.eclipse.jetty.server.handler.HandlerWrapper;
import org.eclipse.jetty.server.session.SessionHandler; import org.eclipse.jetty.server.session.SessionHandler;
import org.eclipse.jetty.util.B64Code; import org.eclipse.jetty.util.B64Code;
import org.eclipse.jetty.util.StringUtil;
import org.eclipse.jetty.util.TypeUtil; import org.eclipse.jetty.util.TypeUtil;
import org.eclipse.jetty.util.security.Constraint; import org.eclipse.jetty.util.security.Constraint;
import org.eclipse.jetty.util.security.Credential;
import org.eclipse.jetty.util.security.Password; import org.eclipse.jetty.util.security.Password;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;
@ -569,17 +568,17 @@ public class ConstraintTest
MessageDigest md = MessageDigest.getInstance("MD5"); MessageDigest md = MessageDigest.getInstance("MD5");
byte[] ha1; byte[] ha1;
// calc A1 digest // calc A1 digest
md.update(username.getBytes(StringUtil.__ISO_8859_1)); md.update(username.getBytes(StandardCharsets.ISO_8859_1));
md.update((byte) ':'); md.update((byte) ':');
md.update("TestRealm".getBytes(StringUtil.__ISO_8859_1)); md.update("TestRealm".getBytes(StandardCharsets.ISO_8859_1));
md.update((byte) ':'); md.update((byte) ':');
md.update(password.getBytes(StringUtil.__ISO_8859_1)); md.update(password.getBytes(StandardCharsets.ISO_8859_1));
ha1 = md.digest(); ha1 = md.digest();
// calc A2 digest // calc A2 digest
md.reset(); md.reset();
md.update("GET".getBytes(StringUtil.__ISO_8859_1)); md.update("GET".getBytes(StandardCharsets.ISO_8859_1));
md.update((byte) ':'); md.update((byte) ':');
md.update(uri.getBytes(StringUtil.__ISO_8859_1)); md.update(uri.getBytes(StandardCharsets.ISO_8859_1));
byte[] ha2 = md.digest(); byte[] ha2 = md.digest();
// calc digest // calc digest
@ -589,17 +588,17 @@ public class ConstraintTest
// request-digest = <"> < KD ( H(A1), unq(nonce-value) ":" H(A2) // request-digest = <"> < KD ( H(A1), unq(nonce-value) ":" H(A2)
// ) > <"> // ) > <">
md.update(TypeUtil.toString(ha1, 16).getBytes(StringUtil.__ISO_8859_1)); md.update(TypeUtil.toString(ha1, 16).getBytes(StandardCharsets.ISO_8859_1));
md.update((byte) ':'); md.update((byte) ':');
md.update(nonce.getBytes(StringUtil.__ISO_8859_1)); md.update(nonce.getBytes(StandardCharsets.ISO_8859_1));
md.update((byte) ':'); md.update((byte) ':');
md.update(nc.getBytes(StringUtil.__ISO_8859_1)); md.update(nc.getBytes(StandardCharsets.ISO_8859_1));
md.update((byte) ':'); md.update((byte) ':');
md.update(CNONCE.getBytes(StringUtil.__ISO_8859_1)); md.update(CNONCE.getBytes(StandardCharsets.ISO_8859_1));
md.update((byte) ':'); md.update((byte) ':');
md.update("auth".getBytes(StringUtil.__ISO_8859_1)); md.update("auth".getBytes(StandardCharsets.ISO_8859_1));
md.update((byte) ':'); md.update((byte) ':');
md.update(TypeUtil.toString(ha2, 16).getBytes(StringUtil.__ISO_8859_1)); md.update(TypeUtil.toString(ha2, 16).getBytes(StandardCharsets.ISO_8859_1));
byte[] digest = md.digest(); byte[] digest = md.digest();
// check digest // check digest

View File

@ -189,7 +189,7 @@ public abstract class AbstractConnector extends ContainerLifeCycle implements Co
for (ConnectionFactory factory:factories) for (ConnectionFactory factory:factories)
addConnectionFactory(factory); addConnectionFactory(factory);
if (acceptors<=0) if (acceptors<0)
acceptors=Math.max(1,(Runtime.getRuntime().availableProcessors()) / 2); acceptors=Math.max(1,(Runtime.getRuntime().availableProcessors()) / 2);
if (acceptors > 2 * Runtime.getRuntime().availableProcessors()) if (acceptors > 2 * Runtime.getRuntime().availableProcessors())
LOG.warn("Acceptors should be <= 2*availableProcessors: " + this); LOG.warn("Acceptors should be <= 2*availableProcessors: " + this);

View File

@ -18,7 +18,6 @@
package org.eclipse.jetty.server; package org.eclipse.jetty.server;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest; import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse; import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;

View File

@ -20,8 +20,6 @@ package org.eclipse.jetty.server;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import javax.servlet.ReadListener;
/** /**
* <p>An implementation of HttpInput using {@link ByteBuffer} as items.</p> * <p>An implementation of HttpInput using {@link ByteBuffer} as items.</p>
*/ */

View File

@ -19,6 +19,7 @@
package org.eclipse.jetty.server; package org.eclipse.jetty.server;
import java.util.Objects; import java.util.Objects;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
/** /**

View File

@ -22,6 +22,7 @@ import java.io.IOException;
import java.net.InetSocketAddress; import java.net.InetSocketAddress;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.channels.ClosedChannelException; import java.nio.channels.ClosedChannelException;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
@ -50,7 +51,6 @@ import org.eclipse.jetty.server.handler.ContextHandler;
import org.eclipse.jetty.server.handler.ErrorHandler; import org.eclipse.jetty.server.handler.ErrorHandler;
import org.eclipse.jetty.util.BlockingCallback; import org.eclipse.jetty.util.BlockingCallback;
import org.eclipse.jetty.util.Callback; import org.eclipse.jetty.util.Callback;
import org.eclipse.jetty.util.StringUtil;
import org.eclipse.jetty.util.URIUtil; import org.eclipse.jetty.util.URIUtil;
import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.util.log.Logger;
@ -491,7 +491,7 @@ public class HttpChannel<T> implements HttpParser.RequestHandler<T>, Runnable
{ {
LOG.warn("Failed UTF-8 decode for request path, trying ISO-8859-1"); LOG.warn("Failed UTF-8 decode for request path, trying ISO-8859-1");
LOG.ignore(e); LOG.ignore(e);
path = _uri.getDecodedPath(StringUtil.__ISO_8859_1); path = _uri.getDecodedPath(StandardCharsets.ISO_8859_1);
} }
String info = URIUtil.canonicalPath(path); String info = URIUtil.canonicalPath(path);

View File

@ -21,7 +21,7 @@ package org.eclipse.jetty.server;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import javax.servlet.AsyncEvent;
import javax.servlet.AsyncListener; import javax.servlet.AsyncListener;
import javax.servlet.RequestDispatcher; import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext; import javax.servlet.ServletContext;

View File

@ -34,7 +34,6 @@ import org.eclipse.jetty.io.ByteBufferPool;
import org.eclipse.jetty.io.Connection; import org.eclipse.jetty.io.Connection;
import org.eclipse.jetty.io.EndPoint; import org.eclipse.jetty.io.EndPoint;
import org.eclipse.jetty.io.EofException; import org.eclipse.jetty.io.EofException;
import org.eclipse.jetty.util.BlockingCallback;
import org.eclipse.jetty.util.BufferUtil; import org.eclipse.jetty.util.BufferUtil;
import org.eclipse.jetty.util.Callback; import org.eclipse.jetty.util.Callback;
import org.eclipse.jetty.util.IteratingNestedCallback; import org.eclipse.jetty.util.IteratingNestedCallback;

View File

@ -19,6 +19,7 @@
package org.eclipse.jetty.server; package org.eclipse.jetty.server;
import java.io.IOException; import java.io.IOException;
import javax.servlet.ReadListener; import javax.servlet.ReadListener;
import javax.servlet.ServletInputStream; import javax.servlet.ServletInputStream;

View File

@ -24,6 +24,7 @@ import java.nio.ByteBuffer;
import java.nio.channels.ReadableByteChannel; import java.nio.channels.ReadableByteChannel;
import java.nio.channels.WritePendingException; import java.nio.channels.WritePendingException;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import javax.servlet.RequestDispatcher; import javax.servlet.RequestDispatcher;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
import javax.servlet.ServletRequest; import javax.servlet.ServletRequest;

View File

@ -20,6 +20,7 @@ package org.eclipse.jetty.server;
import java.io.IOException; import java.io.IOException;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.BlockingQueue; import java.util.concurrent.BlockingQueue;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
@ -30,7 +31,6 @@ import org.eclipse.jetty.io.ByteArrayEndPoint;
import org.eclipse.jetty.io.ByteBufferPool; import org.eclipse.jetty.io.ByteBufferPool;
import org.eclipse.jetty.io.Connection; import org.eclipse.jetty.io.Connection;
import org.eclipse.jetty.util.BufferUtil; import org.eclipse.jetty.util.BufferUtil;
import org.eclipse.jetty.util.StringUtil;
import org.eclipse.jetty.util.ssl.SslContextFactory; import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.eclipse.jetty.util.thread.Scheduler; import org.eclipse.jetty.util.thread.Scheduler;
@ -47,22 +47,22 @@ public class LocalConnector extends AbstractConnector
public LocalConnector(Server server) public LocalConnector(Server server)
{ {
this(server, null, null, null, 0, new HttpConnectionFactory()); this(server, null, null, null, -1, new HttpConnectionFactory());
} }
public LocalConnector(Server server, SslContextFactory sslContextFactory) public LocalConnector(Server server, SslContextFactory sslContextFactory)
{ {
this(server, null, null, null, 0,AbstractConnectionFactory.getFactories(sslContextFactory,new HttpConnectionFactory())); this(server, null, null, null, -1,AbstractConnectionFactory.getFactories(sslContextFactory,new HttpConnectionFactory()));
} }
public LocalConnector(Server server, ConnectionFactory connectionFactory) public LocalConnector(Server server, ConnectionFactory connectionFactory)
{ {
this(server, null, null, null, 0, connectionFactory); this(server, null, null, null, -1, connectionFactory);
} }
public LocalConnector(Server server, ConnectionFactory connectionFactory, SslContextFactory sslContextFactory) public LocalConnector(Server server, ConnectionFactory connectionFactory, SslContextFactory sslContextFactory)
{ {
this(server, null, null, null, 0, AbstractConnectionFactory.getFactories(sslContextFactory,connectionFactory)); this(server, null, null, null, -1, AbstractConnectionFactory.getFactories(sslContextFactory,connectionFactory));
} }
@Override @Override
@ -100,8 +100,8 @@ public class LocalConnector extends AbstractConnector
*/ */
public String getResponses(String requests,long idleFor,TimeUnit units) throws Exception public String getResponses(String requests,long idleFor,TimeUnit units) throws Exception
{ {
ByteBuffer result = getResponses(BufferUtil.toBuffer(requests,StringUtil.__UTF8_CHARSET),idleFor,units); ByteBuffer result = getResponses(BufferUtil.toBuffer(requests,StandardCharsets.UTF_8),idleFor,units);
return result==null?null:BufferUtil.toString(result,StringUtil.__UTF8_CHARSET); return result==null?null:BufferUtil.toString(result,StandardCharsets.UTF_8);
} }
/** Sends requests and get's responses based on thread activity. /** Sends requests and get's responses based on thread activity.
@ -150,7 +150,7 @@ public class LocalConnector extends AbstractConnector
*/ */
public LocalEndPoint executeRequest(String rawRequest) public LocalEndPoint executeRequest(String rawRequest)
{ {
return executeRequest(BufferUtil.toBuffer(rawRequest,StringUtil.__UTF8_CHARSET)); return executeRequest(BufferUtil.toBuffer(rawRequest, StandardCharsets.UTF_8));
} }
private LocalEndPoint executeRequest(ByteBuffer rawRequest) private LocalEndPoint executeRequest(ByteBuffer rawRequest)
@ -190,7 +190,7 @@ public class LocalConnector extends AbstractConnector
// TODO this is a busy wait // TODO this is a busy wait
while(getIn()==null || BufferUtil.hasContent(getIn())) while(getIn()==null || BufferUtil.hasContent(getIn()))
Thread.yield(); Thread.yield();
setInput(BufferUtil.toBuffer(s, StringUtil.__UTF8_CHARSET)); setInput(BufferUtil.toBuffer(s, StandardCharsets.UTF_8));
} }
@Override @Override

View File

@ -20,6 +20,7 @@ package org.eclipse.jetty.server;
import java.io.IOException; import java.io.IOException;
import java.io.InterruptedIOException; import java.io.InterruptedIOException;
import javax.servlet.ServletInputStream; import javax.servlet.ServletInputStream;
import org.eclipse.jetty.util.ArrayQueue; import org.eclipse.jetty.util.ArrayQueue;

View File

@ -28,6 +28,7 @@ import java.io.UnsupportedEncodingException;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.InetSocketAddress; import java.net.InetSocketAddress;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.charset.UnsupportedCharsetException; import java.nio.charset.UnsupportedCharsetException;
import java.security.Principal; import java.security.Principal;
import java.util.ArrayList; import java.util.ArrayList;
@ -39,6 +40,7 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
import javax.servlet.AsyncContext; import javax.servlet.AsyncContext;
import javax.servlet.AsyncListener; import javax.servlet.AsyncListener;
import javax.servlet.DispatcherType; import javax.servlet.DispatcherType;
@ -1873,7 +1875,7 @@ public class Request implements HttpServletRequest
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */
/** /**
* Set the character encoding used for the query string. This call will effect the return of getQueryString and getParamaters. It must be called before any * Set the character encoding used for the query string. This call will effect the return of getQueryString and getParamaters. It must be called before any
* geParameter methods. * getParameter methods.
* *
* The request attribute "org.eclipse.jetty.server.server.Request.queryEncoding" may be set as an alternate method of calling setQueryEncoding. * The request attribute "org.eclipse.jetty.server.server.Request.queryEncoding" may be set as an alternate method of calling setQueryEncoding.
* *
@ -2100,6 +2102,7 @@ public class Request implements HttpServletRequest
setAttribute(__MULTIPART_INPUT_STREAM, _multiPartInputStream); setAttribute(__MULTIPART_INPUT_STREAM, _multiPartInputStream);
setAttribute(__MULTIPART_CONTEXT, _context); setAttribute(__MULTIPART_CONTEXT, _context);
Collection<Part> parts = _multiPartInputStream.getParts(); //causes parsing Collection<Part> parts = _multiPartInputStream.getParts(); //causes parsing
ByteArrayOutputStream os = null;
for (Part p:parts) for (Part p:parts)
{ {
MultiPartInputStreamParser.MultiPart mp = (MultiPartInputStreamParser.MultiPart)p; MultiPartInputStreamParser.MultiPart mp = (MultiPartInputStreamParser.MultiPart)p;
@ -2110,21 +2113,17 @@ public class Request implements HttpServletRequest
if (mp.getContentType() != null) if (mp.getContentType() != null)
charset = MimeTypes.getCharsetFromContentType(mp.getContentType()); charset = MimeTypes.getCharsetFromContentType(mp.getContentType());
ByteArrayOutputStream os = null; //get the bytes regardless of being in memory or in temp file
InputStream is = mp.getInputStream(); //get the bytes regardless of being in memory or in temp file try (InputStream is = mp.getInputStream())
try
{ {
if (os == null)
os = new ByteArrayOutputStream(); os = new ByteArrayOutputStream();
IO.copy(is, os); IO.copy(is, os);
String content=new String(os.toByteArray(),charset==null?StringUtil.__UTF8:charset); String content=new String(os.toByteArray(),charset==null?StandardCharsets.UTF_8:Charset.forName(charset));
getParameter(""); //cause params to be evaluated getParameter(""); //cause params to be evaluated
getParameters().add(mp.getName(), content); getParameters().add(mp.getName(), content);
} }
finally os.reset();
{
IO.close(os);
IO.close(is);
}
} }
} }
} }
@ -2169,7 +2168,7 @@ public class Request implements HttpServletRequest
{ {
// extract parameters from dispatch query // extract parameters from dispatch query
MultiMap<String> parameters = new MultiMap<>(); MultiMap<String> parameters = new MultiMap<>();
UrlEncoded.decodeTo(query,parameters, StringUtil.__UTF8_CHARSET,-1); //have to assume UTF-8 because we can't know otherwise UrlEncoded.decodeTo(query,parameters, StandardCharsets.UTF_8,-1); //have to assume UTF-8 because we can't know otherwise
boolean merge_old_query = false; boolean merge_old_query = false;
@ -2194,7 +2193,7 @@ public class Request implements HttpServletRequest
MultiMap<String> overridden_new_query = new MultiMap<>(); MultiMap<String> overridden_new_query = new MultiMap<>();
UrlEncoded.decodeTo(query,overridden_new_query,StringUtil.__UTF8_CHARSET,-1); //have to assume utf8 as we cannot know otherwise UrlEncoded.decodeTo(query,overridden_new_query,StandardCharsets.UTF_8,-1); //have to assume utf8 as we cannot know otherwise
for(String name: overridden_old_query.keySet()) for(String name: overridden_old_query.keySet())
{ {

View File

@ -34,7 +34,6 @@ import java.util.concurrent.atomic.AtomicReference;
import org.eclipse.jetty.http.DateGenerator; import org.eclipse.jetty.http.DateGenerator;
import org.eclipse.jetty.http.HttpContent; import org.eclipse.jetty.http.HttpContent;
import org.eclipse.jetty.http.HttpContent.ResourceAsHttpContent; import org.eclipse.jetty.http.HttpContent.ResourceAsHttpContent;
import org.eclipse.jetty.http.HttpFields;
import org.eclipse.jetty.http.MimeTypes; import org.eclipse.jetty.http.MimeTypes;
import org.eclipse.jetty.util.BufferUtil; import org.eclipse.jetty.util.BufferUtil;
import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Log;

View File

@ -26,7 +26,6 @@ import java.nio.channels.IllegalSelectorException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.EnumSet;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.Iterator; import java.util.Iterator;
import java.util.Locale; import java.util.Locale;
@ -34,18 +33,17 @@ import java.util.concurrent.atomic.AtomicInteger;
import javax.servlet.RequestDispatcher; import javax.servlet.RequestDispatcher;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
import javax.servlet.SessionTrackingMode;
import javax.servlet.http.Cookie; import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import org.eclipse.jetty.http.DateGenerator;
import org.eclipse.jetty.http.HttpContent; import org.eclipse.jetty.http.HttpContent;
import org.eclipse.jetty.http.HttpCookie; import org.eclipse.jetty.http.HttpCookie;
import org.eclipse.jetty.http.HttpField; import org.eclipse.jetty.http.HttpField;
import org.eclipse.jetty.http.HttpFields; import org.eclipse.jetty.http.HttpFields;
import org.eclipse.jetty.http.HttpGenerator; import org.eclipse.jetty.http.HttpGenerator;
import org.eclipse.jetty.http.HttpGenerator.ResponseInfo; import org.eclipse.jetty.http.HttpGenerator.ResponseInfo;
import org.eclipse.jetty.http.DateGenerator;
import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.HttpHeader;
import org.eclipse.jetty.http.HttpHeaderValue; import org.eclipse.jetty.http.HttpHeaderValue;
import org.eclipse.jetty.http.HttpParser; import org.eclipse.jetty.http.HttpParser;
@ -73,6 +71,15 @@ public class Response implements HttpServletResponse
private static final String __COOKIE_DELIM="\",;\\ \t"; private static final String __COOKIE_DELIM="\",;\\ \t";
private final static String __01Jan1970_COOKIE = DateGenerator.formatCookieDate(0).trim(); private final static String __01Jan1970_COOKIE = DateGenerator.formatCookieDate(0).trim();
// Cookie building buffer. Reduce garbage for cookie using applications
private static final ThreadLocal<StringBuilder> __cookieBuilder = new ThreadLocal<StringBuilder>()
{
@Override
protected StringBuilder initialValue()
{
return new StringBuilder(128);
}
};
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */
public static Response getResponse(HttpServletResponse response) public static Response getResponse(HttpServletResponse response)
@ -265,7 +272,8 @@ public class Response implements HttpServletResponse
throw new IllegalArgumentException("Bad cookie name"); throw new IllegalArgumentException("Bad cookie name");
// Format value and params // Format value and params
StringBuilder buf = new StringBuilder(128); StringBuilder buf = __cookieBuilder.get();
buf.setLength(0);
// Name is checked for legality by servlet spec, but can also be passed directly so check again for quoting // Name is checked for legality by servlet spec, but can also be passed directly so check again for quoting
boolean quote_name=isQuoteNeededForCookie(name); boolean quote_name=isQuoteNeededForCookie(name);

View File

@ -61,6 +61,7 @@ import org.eclipse.jetty.util.log.Logger;
import org.eclipse.jetty.util.thread.QueuedThreadPool; import org.eclipse.jetty.util.thread.QueuedThreadPool;
import org.eclipse.jetty.util.thread.ShutdownThread; import org.eclipse.jetty.util.thread.ShutdownThread;
import org.eclipse.jetty.util.thread.ThreadPool; import org.eclipse.jetty.util.thread.ThreadPool;
import org.eclipse.jetty.util.thread.ThreadPool.SizedThreadPool;
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */
/** Jetty HTTP Servlet Server. /** Jetty HTTP Servlet Server.
@ -300,6 +301,24 @@ public class Server extends HandlerWrapper implements Attributes
HttpGenerator.setJettyVersion(HttpConfiguration.SERVER_VERSION); HttpGenerator.setJettyVersion(HttpConfiguration.SERVER_VERSION);
MultiException mex=new MultiException(); MultiException mex=new MultiException();
// check size of thread pool
SizedThreadPool pool = getBean(SizedThreadPool.class);
int max=pool==null?-1:pool.getMaxThreads();
int needed=1;
if (mex.size()==0)
{
for (Connector connector : _connectors)
{
if (connector instanceof AbstractConnector)
needed+=((AbstractConnector)connector).getAcceptors();
if (connector instanceof ServerConnector)
needed+=((ServerConnector)connector).getSelectorManager().getSelectorCount();
}
}
if (max>0 && needed>=max)
throw new IllegalStateException("Insufficient max threads in ThreadPool: max="+max+" < needed="+needed);
try try
{ {
super.doStart(); super.doStart();
@ -309,20 +328,18 @@ public class Server extends HandlerWrapper implements Attributes
mex.add(e); mex.add(e);
} }
if (mex.size()==0) // start connectors last
{ for (Connector connector : _connectors)
for (Connector _connector : _connectors)
{ {
try try
{ {
_connector.start(); connector.start();
} }
catch(Throwable e) catch(Throwable e)
{ {
mex.add(e); mex.add(e);
} }
} }
}
if (isDumpAfterStart()) if (isDumpAfterStart())
dumpStdErr(); dumpStdErr();

View File

@ -96,7 +96,7 @@ public class ServerConnector extends AbstractNetworkConnector
public ServerConnector( public ServerConnector(
@Name("server") Server server) @Name("server") Server server)
{ {
this(server,null,null,null,0,0,new HttpConnectionFactory()); this(server,null,null,null,-1,-1,new HttpConnectionFactory());
} }
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */
@ -104,9 +104,10 @@ public class ServerConnector extends AbstractNetworkConnector
* <p>Construct a ServerConnector with a private instance of {@link HttpConnectionFactory} as the only factory.</p> * <p>Construct a ServerConnector with a private instance of {@link HttpConnectionFactory} as the only factory.</p>
* @param server The {@link Server} this connector will accept connection for. * @param server The {@link Server} this connector will accept connection for.
* @param acceptors * @param acceptors
* the number of acceptor threads to use, or 0 for a default value. Acceptors accept new TCP/IP connections. * the number of acceptor threads to use, or -1 for a default value. Acceptors accept new TCP/IP connections. If 0, then
* the selector threads are used to accept connections.
* @param selectors * @param selectors
* the number of selector threads, or 0 for a default value. Selectors notice and schedule established connection that can make IO progress. * the number of selector threads, or -1 for a default value. Selectors notice and schedule established connection that can make IO progress.
*/ */
public ServerConnector( public ServerConnector(
@Name("server") Server server, @Name("server") Server server,
@ -126,7 +127,7 @@ public class ServerConnector extends AbstractNetworkConnector
@Name("server") Server server, @Name("server") Server server,
@Name("factories") ConnectionFactory... factories) @Name("factories") ConnectionFactory... factories)
{ {
this(server,null,null,null,0,0,factories); this(server,null,null,null,-1,-1,factories);
} }
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */
@ -140,7 +141,7 @@ public class ServerConnector extends AbstractNetworkConnector
@Name("server") Server server, @Name("server") Server server,
@Name("sslContextFactory") SslContextFactory sslContextFactory) @Name("sslContextFactory") SslContextFactory sslContextFactory)
{ {
this(server,null,null,null,0,0,AbstractConnectionFactory.getFactories(sslContextFactory,new HttpConnectionFactory())); this(server,null,null,null,-1,-1,AbstractConnectionFactory.getFactories(sslContextFactory,new HttpConnectionFactory()));
} }
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */
@ -150,9 +151,10 @@ public class ServerConnector extends AbstractNetworkConnector
* @param sslContextFactory If non null, then a {@link SslConnectionFactory} is instantiated and prepended to the * @param sslContextFactory If non null, then a {@link SslConnectionFactory} is instantiated and prepended to the
* list of HTTP Connection Factory. * list of HTTP Connection Factory.
* @param acceptors * @param acceptors
* the number of acceptor threads to use, or 0 for a default value. Acceptors accept new TCP/IP connections. * the number of acceptor threads to use, or -1 for a default value. Acceptors accept new TCP/IP connections. If 0, then
* the selector threads are used to accept connections.
* @param selectors * @param selectors
* the number of selector threads, or 0 for a default value. Selectors notice and schedule established connection that can make IO progress. * the number of selector threads, or -1 for a default value. Selectors notice and schedule established connection that can make IO progress.
*/ */
public ServerConnector( public ServerConnector(
@Name("server") Server server, @Name("server") Server server,
@ -175,7 +177,7 @@ public class ServerConnector extends AbstractNetworkConnector
@Name("sslContextFactory") SslContextFactory sslContextFactory, @Name("sslContextFactory") SslContextFactory sslContextFactory,
@Name("factories") ConnectionFactory... factories) @Name("factories") ConnectionFactory... factories)
{ {
this(server,null,null,null,0,0,AbstractConnectionFactory.getFactories(sslContextFactory,factories)); this(server,null,null,null,-1,-1,AbstractConnectionFactory.getFactories(sslContextFactory,factories));
} }
/** Generic Server Connection. /** Generic Server Connection.
@ -189,9 +191,10 @@ public class ServerConnector extends AbstractNetworkConnector
* @param bufferPool * @param bufferPool
* A ByteBuffer pool used to allocate buffers. If null then create a private pool with default configuration. * A ByteBuffer pool used to allocate buffers. If null then create a private pool with default configuration.
* @param acceptors * @param acceptors
* the number of acceptor threads to use, or 0 for a default value. Acceptors accept new TCP/IP connections. * the number of acceptor threads to use, or -1 for a default value. Acceptors accept new TCP/IP connections. If 0, then
* the selector threads are used to accept connections.
* @param selectors * @param selectors
* the number of selector threads, or 0 for a default value. Selectors notice and schedule established connection that can make IO progress. * the number of selector threads, or -1 for a default value. Selectors notice and schedule established connection that can make IO progress.
* @param factories * @param factories
* Zero or more {@link ConnectionFactory} instances used to create and configure connections. * Zero or more {@link ConnectionFactory} instances used to create and configure connections.
*/ */
@ -205,10 +208,22 @@ public class ServerConnector extends AbstractNetworkConnector
@Name("factories") ConnectionFactory... factories) @Name("factories") ConnectionFactory... factories)
{ {
super(server,executor,scheduler,bufferPool,acceptors,factories); super(server,executor,scheduler,bufferPool,acceptors,factories);
_manager = new ServerConnectorManager(getExecutor(), getScheduler(), selectors > 0 ? selectors : Runtime.getRuntime().availableProcessors()); _manager = new ServerConnectorManager(getExecutor(), getScheduler(), selectors >= 0 ? selectors : Runtime.getRuntime().availableProcessors());
addBean(_manager, true); addBean(_manager, true);
} }
@Override
protected void doStart() throws Exception
{
super.doStart();
if (getAcceptors()==0)
{
_acceptChannel.configureBlocking(false);
_manager.acceptor(_acceptChannel);
}
}
@Override @Override
public boolean isOpen() public boolean isOpen()
{ {
@ -319,12 +334,17 @@ public class ServerConnector extends AbstractNetworkConnector
if (serverChannel != null && serverChannel.isOpen()) if (serverChannel != null && serverChannel.isOpen())
{ {
SocketChannel channel = serverChannel.accept(); SocketChannel channel = serverChannel.accept();
accepted(channel);
}
}
private void accepted(SocketChannel channel) throws IOException
{
channel.configureBlocking(false); channel.configureBlocking(false);
Socket socket = channel.socket(); Socket socket = channel.socket();
configure(socket); configure(socket);
_manager.accept(channel); _manager.accept(channel);
} }
}
protected void configure(Socket socket) protected void configure(Socket socket)
{ {
@ -426,6 +446,12 @@ public class ServerConnector extends AbstractNetworkConnector
super(executor, scheduler, selectors); super(executor, scheduler, selectors);
} }
@Override
protected void accepted(SocketChannel channel) throws IOException
{
ServerConnector.this.accepted(channel);
}
@Override @Override
protected SelectChannelEndPoint newEndPoint(SocketChannel channel, ManagedSelector selectSet, SelectionKey selectionKey) throws IOException protected SelectChannelEndPoint newEndPoint(SocketChannel channel, ManagedSelector selectSet, SelectionKey selectionKey) throws IOException
{ {

View File

@ -25,9 +25,9 @@ import java.io.OutputStream;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.ServerSocket; import java.net.ServerSocket;
import java.net.Socket; import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.Properties; import java.util.Properties;
import org.eclipse.jetty.util.StringUtil;
import org.eclipse.jetty.util.thread.ShutdownThread; import org.eclipse.jetty.util.thread.ShutdownThread;
/** /**
@ -112,7 +112,7 @@ public class ShutdownMonitor
// Reply to client // Reply to client
debug("Informing client that we are stopped."); debug("Informing client that we are stopped.");
out.write("Stopped\r\n".getBytes(StringUtil.__UTF8)); out.write("Stopped\r\n".getBytes(StandardCharsets.UTF_8));
out.flush(); out.flush();
// Shutdown Monitor // Shutdown Monitor
@ -131,7 +131,7 @@ public class ShutdownMonitor
else if ("status".equals(cmd)) else if ("status".equals(cmd))
{ {
// Reply to client // Reply to client
out.write("OK\r\n".getBytes(StringUtil.__UTF8)); out.write("OK\r\n".getBytes(StandardCharsets.UTF_8));
out.flush(); out.flush();
} }
} }

View File

@ -19,7 +19,6 @@
package org.eclipse.jetty.server.handler; package org.eclipse.jetty.server.handler;
import java.io.IOException; import java.io.IOException;
import java.util.Arrays;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;

View File

@ -23,7 +23,6 @@ import java.io.PrintWriter;
import java.io.StringWriter; import java.io.StringWriter;
import java.io.Writer; import java.io.Writer;
import javax.activation.MimeType;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;

Some files were not shown because too many files have changed in this diff Show More