diff --git a/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/TestAnnotationConfiguration.java b/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/TestAnnotationConfiguration.java index ee8e5e3d919..fb308ea7406 100644 --- a/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/TestAnnotationConfiguration.java +++ b/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/TestAnnotationConfiguration.java @@ -23,20 +23,22 @@ import java.net.URL; import java.util.ArrayList; import java.util.List; -import junit.framework.TestCase; import org.eclipse.jetty.util.resource.Resource; import org.eclipse.jetty.webapp.FragmentDescriptor; import org.eclipse.jetty.webapp.WebAppContext; +import org.junit.Test; + +import static org.junit.Assert.assertNotNull; /** * TestAnnotationConfiguration * * */ -public class TestAnnotationConfiguration extends TestCase +public class TestAnnotationConfiguration { - public void testGetFragmentFromJar () - throws Exception + @Test + public void testGetFragmentFromJar() throws Exception { String dir = System.getProperty("basedir", "."); File file = new File(dir); diff --git a/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/TestSecurityAnnotationConversions.java b/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/TestSecurityAnnotationConversions.java index babee9c9f16..43dd5bd466a 100644 --- a/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/TestSecurityAnnotationConversions.java +++ b/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/TestSecurityAnnotationConversions.java @@ -27,7 +27,6 @@ import javax.servlet.annotation.ServletSecurity.EmptyRoleSemantic; import javax.servlet.annotation.ServletSecurity.TransportGuarantee; import javax.servlet.http.HttpServlet; -import junit.framework.TestCase; import org.eclipse.jetty.security.ConstraintAware; import org.eclipse.jetty.security.ConstraintMapping; import org.eclipse.jetty.security.ConstraintSecurityHandler; @@ -35,8 +34,15 @@ import org.eclipse.jetty.servlet.ServletHolder; import org.eclipse.jetty.servlet.ServletMapping; import org.eclipse.jetty.util.security.Constraint; import org.eclipse.jetty.webapp.WebAppContext; +import org.junit.Test; -public class TestSecurityAnnotationConversions extends TestCase +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +public class TestSecurityAnnotationConversions { @ServletSecurity(value=@HttpConstraint(value=EmptyRoleSemantic.DENY)) public static class DenyServlet extends HttpServlet @@ -65,8 +71,8 @@ public class TestSecurityAnnotationConversions extends TestCase { } - public void testDenyAllOnClass () - throws Exception + @Test + public void testDenyAllOnClass() throws Exception { WebAppContext wac = makeWebAppContext(DenyServlet.class.getCanonicalName(), "denyServlet", new String[]{"/foo/*", "*.foo"}); @@ -97,9 +103,8 @@ public class TestSecurityAnnotationConversions extends TestCase compareResults(expectedMappings, ((ConstraintAware)wac.getSecurityHandler()).getConstraintMappings()); } - - public void testPermitAll() - throws Exception + @Test + public void testPermitAll() throws Exception { //Assume we found 1 servlet with a @ServletSecurity security annotation WebAppContext wac = makeWebAppContext(PermitServlet.class.getCanonicalName(), "permitServlet", new String[]{"/foo/*", "*.foo"}); @@ -129,8 +134,8 @@ public class TestSecurityAnnotationConversions extends TestCase compareResults (expectedMappings, ((ConstraintAware)wac.getSecurityHandler()).getConstraintMappings()); } - public void testRolesAllowedWithTransportGuarantee () - throws Exception + @Test + public void testRolesAllowedWithTransportGuarantee() throws Exception { //Assume we found 1 servlet with annotation with roles defined and //and a TransportGuarantee @@ -161,9 +166,8 @@ public class TestSecurityAnnotationConversions extends TestCase compareResults (expectedMappings, ((ConstraintAware)wac.getSecurityHandler()).getConstraintMappings()); } - - public void testMethodAnnotation () - throws Exception + @Test + public void testMethodAnnotation() throws Exception { //ServletSecurity annotation with HttpConstraint of TransportGuarantee.CONFIDENTIAL, and a list of rolesAllowed, and //a HttpMethodConstraint for GET method that permits all and has TransportGuarantee.NONE (ie is default) @@ -209,8 +213,8 @@ public class TestSecurityAnnotationConversions extends TestCase compareResults (expectedMappings, ((ConstraintAware)wac.getSecurityHandler()).getConstraintMappings()); } - public void testMethodAnnotation2 () - throws Exception + @Test + public void testMethodAnnotation2() throws Exception { //A ServletSecurity annotation that has HttpConstraint of CONFIDENTIAL with defined roles, but a //HttpMethodConstraint for GET that permits all, but also requires CONFIDENTIAL diff --git a/jetty-client/src/main/java/org/eclipse/jetty/client/HttpClient.java b/jetty-client/src/main/java/org/eclipse/jetty/client/HttpClient.java index c1df291c480..964df790f15 100644 --- a/jetty-client/src/main/java/org/eclipse/jetty/client/HttpClient.java +++ b/jetty-client/src/main/java/org/eclipse/jetty/client/HttpClient.java @@ -44,6 +44,7 @@ import org.eclipse.jetty.client.api.CookieStore; import org.eclipse.jetty.client.api.Destination; import org.eclipse.jetty.client.api.Request; import org.eclipse.jetty.client.api.Response; +import org.eclipse.jetty.http.HttpMethod; import org.eclipse.jetty.io.ByteBufferPool; import org.eclipse.jetty.io.EndPoint; import org.eclipse.jetty.io.MappedByteBufferPool; @@ -223,6 +224,16 @@ public class HttpClient extends AggregateLifeCycle return newRequest(uri).send(); } + public Request POST(String uri) + { + return POST(URI.create(uri)); + } + + public Request POST(URI uri) + { + return newRequest(uri).method(HttpMethod.POST); + } + public Request newRequest(String host, int port) { return newRequest(URI.create(address("http", host, port))); @@ -280,7 +291,7 @@ public class HttpClient extends AggregateLifeCycle return new ArrayList(destinations.values()); } - public void send(Request request, Response.Listener listener) + protected void send(Request request, Response.Listener listener) { String scheme = request.scheme().toLowerCase(); if (!Arrays.asList("http", "https").contains(scheme)) diff --git a/jetty-client/src/main/java/org/eclipse/jetty/client/HttpConnection.java b/jetty-client/src/main/java/org/eclipse/jetty/client/HttpConnection.java index a53f2f7b9e2..9ef995040c3 100644 --- a/jetty-client/src/main/java/org/eclipse/jetty/client/HttpConnection.java +++ b/jetty-client/src/main/java/org/eclipse/jetty/client/HttpConnection.java @@ -18,6 +18,9 @@ package org.eclipse.jetty.client; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.nio.charset.UnsupportedCharsetException; import java.util.Enumeration; import java.util.Iterator; import java.util.List; @@ -29,13 +32,16 @@ import org.eclipse.jetty.client.api.Connection; import org.eclipse.jetty.client.api.ContentProvider; import org.eclipse.jetty.client.api.Request; import org.eclipse.jetty.client.api.Response; +import org.eclipse.jetty.client.util.StringContentProvider; import org.eclipse.jetty.http.HttpCookie; import org.eclipse.jetty.http.HttpFields; import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.HttpMethod; import org.eclipse.jetty.http.HttpVersion; +import org.eclipse.jetty.http.MimeTypes; import org.eclipse.jetty.io.AbstractConnection; import org.eclipse.jetty.io.EndPoint; +import org.eclipse.jetty.util.Fields; import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Logger; @@ -120,6 +126,7 @@ public class HttpConnection extends AbstractConnection implements Connection if (request.idleTimeout() <= 0) request.idleTimeout(client.getIdleTimeout()); + HttpMethod method = request.method(); HttpVersion version = request.version(); HttpFields headers = request.headers(); ContentProvider content = request.content(); @@ -127,7 +134,64 @@ public class HttpConnection extends AbstractConnection implements Connection // Make sure the path is there String path = request.path(); if (path.matches("\\s*")) - request.path("/"); + { + path = "/"; + request.path(path); + } + + Fields fields = request.params(); + if (!fields.isEmpty()) + { + StringBuilder params = new StringBuilder(); + for (Iterator fieldIterator = fields.iterator(); fieldIterator.hasNext();) + { + Fields.Field field = fieldIterator.next(); + String[] values = field.values(); + for (int i = 0; i < values.length; ++i) + { + if (i > 0) + params.append("&"); + params.append(field.name()).append("="); + params.append(urlEncode(values[i])); + } + if (fieldIterator.hasNext()) + params.append("&"); + } + + // Behave as a GET, adding the params to the path, if it's a POST with some content + if (method == HttpMethod.POST && request.content() != null) + method = HttpMethod.GET; + + switch (method) + { + case GET: + { + path += "?"; + path += params.toString(); + request.path(path); + break; + } + case POST: + { + request.header(HttpHeader.CONTENT_TYPE.asString(), MimeTypes.Type.FORM_ENCODED.asString()); + request.content(new StringContentProvider(params.toString())); + break; + } + } + } + + // If we are HTTP 1.1, add the Host header + if (version.getVersion() > 10) + { + if (!headers.containsKey(HttpHeader.HOST.asString())) + { + String value = request.host(); + int port = request.port(); + if (port > 0) + value += ":" + port; + headers.put(HttpHeader.HOST, value); + } + } // Add content headers if (content != null) @@ -181,18 +245,18 @@ public class HttpConnection extends AbstractConnection implements Connection headers.put(HttpHeader.ACCEPT_ENCODING, value.toString()); } } + } - // If we are HTTP 1.1, add the Host header - if (version.getVersion() > 10) + private String urlEncode(String value) + { + String encoding = "UTF-8"; + try { - if (!headers.containsKey(HttpHeader.HOST.asString())) - { - String value = request.host(); - int port = request.port(); - if (port > 0) - value += ":" + port; - headers.put(HttpHeader.HOST, value); - } + return URLEncoder.encode(value, encoding); + } + catch (UnsupportedEncodingException e) + { + throw new UnsupportedCharsetException(encoding); } } diff --git a/jetty-client/src/main/java/org/eclipse/jetty/client/HttpSender.java b/jetty-client/src/main/java/org/eclipse/jetty/client/HttpSender.java index 3adab2d00d1..adf28a3bdce 100644 --- a/jetty-client/src/main/java/org/eclipse/jetty/client/HttpSender.java +++ b/jetty-client/src/main/java/org/eclipse/jetty/client/HttpSender.java @@ -18,7 +18,6 @@ package org.eclipse.jetty.client; -import java.net.URLEncoder; import java.nio.ByteBuffer; import java.util.Collections; import java.util.Iterator; @@ -33,7 +32,6 @@ import org.eclipse.jetty.io.ByteBufferPool; import org.eclipse.jetty.io.EndPoint; import org.eclipse.jetty.util.BufferUtil; import org.eclipse.jetty.util.Callback; -import org.eclipse.jetty.util.Fields; import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Logger; @@ -95,27 +93,7 @@ public class HttpSender { case NEED_INFO: { - String path = request.path(); - Fields fields = request.params(); - if (!fields.isEmpty()) - { - path += "?"; - for (Iterator fieldIterator = fields.iterator(); fieldIterator.hasNext();) - { - Fields.Field field = fieldIterator.next(); - String[] values = field.values(); - for (int i = 0; i < values.length; ++i) - { - if (i > 0) - path += "&"; - path += field.name() + "="; - path += URLEncoder.encode(values[i], "UTF-8"); - } - if (fieldIterator.hasNext()) - path += "&"; - } - } - info = new HttpGenerator.RequestInfo(request.version(), request.headers(), contentLength, request.method().asString(), path); + info = new HttpGenerator.RequestInfo(request.version(), request.headers(), contentLength, request.method().asString(), request.path()); break; } case NEED_HEADER: diff --git a/jetty-ant/src/test/java/org/eclipse/jetty/ant/JettyRunTaskTest.java b/jetty-client/src/main/java/org/eclipse/jetty/client/util/StringContentProvider.java similarity index 69% rename from jetty-ant/src/test/java/org/eclipse/jetty/ant/JettyRunTaskTest.java rename to jetty-client/src/main/java/org/eclipse/jetty/client/util/StringContentProvider.java index 7d43a8c91f2..272a8126996 100644 --- a/jetty-ant/src/test/java/org/eclipse/jetty/ant/JettyRunTaskTest.java +++ b/jetty-client/src/main/java/org/eclipse/jetty/client/util/StringContentProvider.java @@ -15,14 +15,20 @@ // You may elect to redistribute this code under either of these licenses. // ======================================================================== // -package org.eclipse.jetty.ant; -import junit.framework.TestCase; +package org.eclipse.jetty.client.util; -public class JettyRunTaskTest extends TestCase +import java.nio.charset.Charset; + +public class StringContentProvider extends BytesContentProvider { - public void testInit() + public StringContentProvider(String content) { + this(content, "UTF-8"); + } + public StringContentProvider(String content, String encoding) + { + super(content.getBytes(Charset.forName(encoding))); } } diff --git a/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientLoadTest.java b/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientLoadTest.java index 2c1e3a673ec..5b1fe09ec05 100644 --- a/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientLoadTest.java +++ b/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientLoadTest.java @@ -67,7 +67,7 @@ public class HttpClientLoadTest extends AbstractHttpClientServerTest client.setMaxQueueSizePerAddress(1024 * 1024); Random random = new Random(); - int iterations = 1000; + int iterations = 200; CountDownLatch latch = new CountDownLatch(iterations); List failures = new ArrayList<>(); @@ -90,7 +90,7 @@ public class HttpClientLoadTest extends AbstractHttpClientServerTest } testThread.interrupt(); } - }, iterations * ("http".equalsIgnoreCase(scheme) ? 10 : 500), TimeUnit.MILLISECONDS); + }, iterations * ("http".equalsIgnoreCase(scheme) ? 10 : 1000), TimeUnit.MILLISECONDS); long begin = System.nanoTime(); for (int i = 0; i < iterations; ++i) diff --git a/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientTest.java b/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientTest.java index e5270e8cfd5..faeaf019cda 100644 --- a/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientTest.java +++ b/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientTest.java @@ -43,6 +43,7 @@ import org.eclipse.jetty.client.api.Destination; import org.eclipse.jetty.client.api.Request; import org.eclipse.jetty.client.api.Response; import org.eclipse.jetty.client.api.Result; +import org.eclipse.jetty.client.util.BytesContentProvider; import org.eclipse.jetty.http.HttpCookie; import org.eclipse.jetty.server.handler.AbstractHandler; import org.eclipse.jetty.toolchain.test.MavenTestingUtils; @@ -214,6 +215,67 @@ public class HttpClientTest extends AbstractHttpClientServerTest Assert.assertEquals(value11 + value12 + value2, content); } + @Test + public void test_POST_WithParameters() throws Exception + { + final String paramName = "a"; + final String paramValue = "\u20AC"; + start(new AbstractHandler() + { + @Override + public void handle(String target, org.eclipse.jetty.server.Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException + { + baseRequest.setHandled(true); + String value = request.getParameter(paramName); + if (paramValue.equals(value)) + { + response.setCharacterEncoding("UTF-8"); + response.setContentType("text/plain"); + response.getOutputStream().print(value); + } + } + }); + + ContentResponse response = client.POST(scheme + "://localhost:" + connector.getLocalPort()) + .param(paramName, paramValue).send().get(5, TimeUnit.SECONDS); + + Assert.assertNotNull(response); + Assert.assertEquals(200, response.status()); + Assert.assertEquals(paramValue, new String(response.content(), "UTF-8")); + } + + @Test + public void test_POST_WithParameters_WithContent() throws Exception + { + final byte[] content = {0, 1, 2, 3}; + final String paramName = "a"; + final String paramValue = "\u20AC"; + start(new AbstractHandler() + { + @Override + public void handle(String target, org.eclipse.jetty.server.Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException + { + baseRequest.setHandled(true); + String value = request.getParameter(paramName); + if (paramValue.equals(value)) + { + response.setCharacterEncoding("UTF-8"); + response.setContentType("text/plain"); + response.getOutputStream().write(content); + } + } + }); + + ContentResponse response = client.POST(scheme + "://localhost:" + connector.getLocalPort() + "/?b=1") + .param(paramName, paramValue) + .content(new BytesContentProvider(content)) + .send().get(5, TimeUnit.SECONDS); + + Assert.assertNotNull(response); + Assert.assertEquals(200, response.status()); + Assert.assertArrayEquals(content, response.content()); + } + @Test public void test_QueuedRequest_IsSent_WhenPreviousRequestSucceeded() throws Exception { diff --git a/jetty-client/src/test/java/org/eclipse/jetty/client/HttpCookieParserTest.java b/jetty-client/src/test/java/org/eclipse/jetty/client/HttpCookieParserTest.java index de9f7a1bc82..0b4c57cb020 100644 --- a/jetty-client/src/test/java/org/eclipse/jetty/client/HttpCookieParserTest.java +++ b/jetty-client/src/test/java/org/eclipse/jetty/client/HttpCookieParserTest.java @@ -20,8 +20,8 @@ package org.eclipse.jetty.client; import java.util.List; -import junit.framework.Assert; import org.eclipse.jetty.http.HttpCookie; +import org.junit.Assert; import org.junit.Test; public class HttpCookieParserTest diff --git a/jetty-client/src/test/java/org/eclipse/jetty/client/api/Usage.java b/jetty-client/src/test/java/org/eclipse/jetty/client/api/Usage.java index a704dbebc59..62910a68f35 100644 --- a/jetty-client/src/test/java/org/eclipse/jetty/client/api/Usage.java +++ b/jetty-client/src/test/java/org/eclipse/jetty/client/api/Usage.java @@ -96,6 +96,13 @@ public class Usage Assert.assertEquals(200, response.status()); } + @Test + public void testPOSTWithParams() throws Exception + { + HttpClient client = new HttpClient(); + client.POST("http://localhost:8080").param("a", "\u20AC").send(); + } + @Test public void testRequestListener() throws Exception { diff --git a/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/graph/GraphTest.java b/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/graph/GraphTest.java index 68a45952de3..ec23da29380 100644 --- a/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/graph/GraphTest.java +++ b/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/graph/GraphTest.java @@ -18,10 +18,9 @@ package org.eclipse.jetty.deploy.graph; -import junit.framework.Assert; +import org.junit.Assert; import org.junit.Test; - public class GraphTest { final Node nodeA = new Node("A"); @@ -37,7 +36,7 @@ public class GraphTest Path path = new Path(); - Assert.assertEquals(0,path.nodes()); + Assert.assertEquals(0, path.nodes()); Assert.assertEquals(null,path.firstNode()); Assert.assertEquals(null,path.lastNode()); diff --git a/jetty-http/src/test/java/org/eclipse/jetty/http/PathMapTest.java b/jetty-http/src/test/java/org/eclipse/jetty/http/PathMapTest.java index da387258f02..3df8d2b36b6 100644 --- a/jetty-http/src/test/java/org/eclipse/jetty/http/PathMapTest.java +++ b/jetty-http/src/test/java/org/eclipse/jetty/http/PathMapTest.java @@ -18,18 +18,21 @@ package org.eclipse.jetty.http; -import junit.framework.TestCase; import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + /** * */ -public class PathMapTest extends TestCase +public class PathMapTest { @Test public void testPathMap() throws Exception { - PathMap p = new PathMap(); + PathMap p = new PathMap<>(); p.put("/abs/path", "1"); p.put("/abs/path/longer", "2"); diff --git a/jetty-io/src/test/java/org/eclipse/jetty/io/ByteArrayEndPointTest.java b/jetty-io/src/test/java/org/eclipse/jetty/io/ByteArrayEndPointTest.java index 8f75429df6d..b8d7e3da161 100644 --- a/jetty-io/src/test/java/org/eclipse/jetty/io/ByteArrayEndPointTest.java +++ b/jetty-io/src/test/java/org/eclipse/jetty/io/ByteArrayEndPointTest.java @@ -34,10 +34,10 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import static junit.framework.Assert.assertEquals; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.greaterThan; import static org.hamcrest.Matchers.instanceOf; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; diff --git a/jetty-io/src/test/java/org/eclipse/jetty/io/NIOTest.java b/jetty-io/src/test/java/org/eclipse/jetty/io/NIOTest.java index 56f60227cea..bc8186ed768 100644 --- a/jetty-io/src/test/java/org/eclipse/jetty/io/NIOTest.java +++ b/jetty-io/src/test/java/org/eclipse/jetty/io/NIOTest.java @@ -27,9 +27,9 @@ import java.nio.channels.SocketChannel; import org.junit.Test; -import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertFalse; -import static junit.framework.Assert.assertTrue; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; /** * diff --git a/jetty-io/src/test/java/org/eclipse/jetty/io/SslConnectionTest.java b/jetty-io/src/test/java/org/eclipse/jetty/io/SslConnectionTest.java index 8cb983b0b38..c419a06403d 100644 --- a/jetty-io/src/test/java/org/eclipse/jetty/io/SslConnectionTest.java +++ b/jetty-io/src/test/java/org/eclipse/jetty/io/SslConnectionTest.java @@ -32,7 +32,6 @@ import java.util.concurrent.TimeUnit; import javax.net.ssl.SSLEngine; import javax.net.ssl.SSLSocket; -import junit.framework.Assert; import org.eclipse.jetty.io.ssl.SslConnection; import org.eclipse.jetty.toolchain.test.MavenTestingUtils; import org.eclipse.jetty.util.BufferUtil; @@ -43,6 +42,7 @@ import org.eclipse.jetty.util.thread.QueuedThreadPool; import org.eclipse.jetty.util.thread.Scheduler; import org.eclipse.jetty.util.thread.TimerScheduler; import org.junit.After; +import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; @@ -232,7 +232,7 @@ public class SslConnectionTest client.getOutputStream().write("HelloWorld".getBytes("UTF-8")); byte[] buffer = new byte[1024]; int len=client.getInputStream().read(buffer); - Assert.assertEquals(10,len); + Assert.assertEquals(10, len); Assert.assertEquals("HelloWorld",new String(buffer,0,len,StringUtil.__UTF8_CHARSET)); client.close(); diff --git a/jetty-io/src/test/java/org/eclipse/jetty/io/WriteFlusherTest.java b/jetty-io/src/test/java/org/eclipse/jetty/io/WriteFlusherTest.java index e153660128f..f47ffe429c2 100644 --- a/jetty-io/src/test/java/org/eclipse/jetty/io/WriteFlusherTest.java +++ b/jetty-io/src/test/java/org/eclipse/jetty/io/WriteFlusherTest.java @@ -45,12 +45,12 @@ import org.mockito.invocation.InvocationOnMock; import org.mockito.runners.MockitoJUnitRunner; import org.mockito.stubbing.Answer; -import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertFalse; -import static junit.framework.Assert.assertTrue; 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; @@ -351,7 +351,7 @@ public class WriteFlusherTest public void testConcurrentAccessToWriteAndOnFail() throws Exception { // TODO review this test - It was changed for the boolean flush return, but not really well inspected - + final CountDownLatch failedCalledLatch = new CountDownLatch(1); final CountDownLatch writeCalledLatch = new CountDownLatch(1); final CountDownLatch writeCompleteLatch = new CountDownLatch(1); @@ -377,13 +377,13 @@ public class WriteFlusherTest executor.submit(new Writer(writeFlusher, callback)); assertThat("Write has been called.", writeCalledLatch.await(5, TimeUnit.SECONDS), is(true)); executor.submit(new FailedCaller(writeFlusher, failedCalledLatch)).get(); - - + + // callback failed is NOT called because in WRITING state failed() doesn't know about the callback. However // either the write succeeds or we get an IOException which will call callback.failed() assertThat("write complete", writeCompleteLatch.await(5, TimeUnit.SECONDS), is(true)); - - + + // in this testcase we more or less emulate that the write has successfully finished and we return from // EndPoint.flush() back to WriteFlusher.write(). Then someone calls failed. So the callback should have been // completed. @@ -570,7 +570,7 @@ public class WriteFlusherTest { byteBuffer.position(byteBuffer.limit()); } - + for (ByteBuffer b: buffers) if (BufferUtil.hasContent(b)) return false; diff --git a/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/ObjectMBeanTest.java b/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/ObjectMBeanTest.java index 4a274d22d58..3646743942d 100644 --- a/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/ObjectMBeanTest.java +++ b/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/ObjectMBeanTest.java @@ -25,11 +25,11 @@ import javax.management.MBeanOperationInfo; import javax.management.MBeanParameterInfo; import com.acme.Derived; -import junit.framework.Assert; import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.util.thread.QueuedThreadPool; import org.junit.After; +import org.junit.Assert; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; diff --git a/jetty-plugins/src/test/java/org/eclipse/jetty/plugins/PluginManagerTest.java b/jetty-plugins/src/test/java/org/eclipse/jetty/plugins/PluginManagerTest.java index 4e567ff559c..24a5151401f 100644 --- a/jetty-plugins/src/test/java/org/eclipse/jetty/plugins/PluginManagerTest.java +++ b/jetty-plugins/src/test/java/org/eclipse/jetty/plugins/PluginManagerTest.java @@ -27,8 +27,8 @@ import java.nio.channels.FileChannel; import java.util.HashSet; import java.util.Set; -import junit.framework.Assert; import org.eclipse.jetty.plugins.model.Plugin; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/jetty-security/src/test/java/org/eclipse/jetty/security/PropertyUserStoreTest.java b/jetty-security/src/test/java/org/eclipse/jetty/security/PropertyUserStoreTest.java index 8b758056747..e75a191253d 100644 --- a/jetty-security/src/test/java/org/eclipse/jetty/security/PropertyUserStoreTest.java +++ b/jetty-security/src/test/java/org/eclipse/jetty/security/PropertyUserStoreTest.java @@ -25,9 +25,9 @@ import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; -import junit.framework.Assert; import org.eclipse.jetty.util.security.Credential; import org.junit.After; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/HttpURITest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/HttpURITest.java index 2b1bfae001a..9f3d5236883 100644 --- a/jetty-server/src/test/java/org/eclipse/jetty/server/HttpURITest.java +++ b/jetty-server/src/test/java/org/eclipse/jetty/server/HttpURITest.java @@ -18,23 +18,22 @@ package org.eclipse.jetty.server; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; import java.nio.charset.Charset; -import junit.framework.Assert; - import org.eclipse.jetty.http.HttpURI; import org.eclipse.jetty.util.MultiMap; import org.eclipse.jetty.util.StringUtil; +import org.junit.Assert; import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + public class HttpURITest { private final String[][] partial_tests= diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ResourceHandlerTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ResourceHandlerTest.java index 216c867e17d..55bbca4d4f2 100644 --- a/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ResourceHandlerTest.java +++ b/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ResourceHandlerTest.java @@ -20,15 +20,13 @@ package org.eclipse.jetty.server.handler; import java.net.URI; -import junit.framework.Assert; -import junit.framework.TestCase; - import org.eclipse.jetty.server.Connector; -import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.toolchain.test.MavenTestingUtils; import org.eclipse.jetty.toolchain.test.SimpleRequest; import org.junit.AfterClass; +import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; @@ -37,14 +35,13 @@ import org.junit.Test; * * TODO: increase the testing going on here */ -public class ResourceHandlerTest extends TestCase +public class ResourceHandlerTest { private static Server _server; private static ServerConnector _connector; private static ContextHandler _contextHandler; private static ResourceHandler _resourceHandler; - @BeforeClass public void setUp() throws Exception { @@ -60,7 +57,6 @@ public class ResourceHandlerTest extends TestCase _server.start(); } - /* ------------------------------------------------------------ */ @AfterClass public void tearDown() throws Exception { @@ -78,5 +74,4 @@ public class ResourceHandlerTest extends TestCase Assert.assertNotNull("missing jetty.css" , sr.getString("/resource/jetty-dir.css")); } - } diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SSLCloseTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SSLCloseTest.java index c256a28f0a5..6487c7ce5b7 100644 --- a/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SSLCloseTest.java +++ b/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SSLCloseTest.java @@ -24,11 +24,7 @@ import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.Socket; -import java.security.cert.CertificateException; -import java.security.cert.X509Certificate; import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManager; -import javax.net.ssl.X509TrustManager; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -37,38 +33,19 @@ import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.server.handler.AbstractHandler; +import org.eclipse.jetty.toolchain.test.MavenTestingUtils; +import org.eclipse.jetty.util.resource.Resource; import org.eclipse.jetty.util.ssl.SslContextFactory; import org.junit.Test; -/** - * HttpServer Tester. - */ public class SSLCloseTest { - private static class CredulousTM implements TrustManager, X509TrustManager - { - public X509Certificate[] getAcceptedIssuers() - { - return new X509Certificate[]{}; - } - - public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException - { - } - - public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException - { - } - } - - private static final TrustManager[] s_dummyTrustManagers=new TrustManager[] { new CredulousTM() }; - @Test public void testClose() throws Exception { - String keystore = System.getProperty("user.dir")+File.separator+"src"+File.separator+"test"+File.separator+"resources"+File.separator+"keystore"; + File keystore = MavenTestingUtils.getTestResourceFile("keystore"); SslContextFactory sslContextFactory = new SslContextFactory(); - sslContextFactory.setKeyStorePath(keystore); + sslContextFactory.setKeyStoreResource(Resource.newResource(keystore)); sslContextFactory.setKeyStorePassword("storepwd"); sslContextFactory.setKeyManagerPassword("keypwd"); @@ -81,7 +58,7 @@ public class SSLCloseTest server.start(); SSLContext ctx=SSLContext.getInstance("SSLv3"); - ctx.init(null,s_dummyTrustManagers,new java.security.SecureRandom()); + ctx.init(null,SslContextFactory.TRUST_ALL_CERTS,new java.security.SecureRandom()); int port=connector.getLocalPort(); @@ -109,7 +86,6 @@ public class SSLCloseTest Thread.yield(); } - private static class WriteHandler extends AbstractHandler { public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException diff --git a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/AsyncContextTest.java b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/AsyncContextTest.java index 117df2ff9f6..0ffa6ac5c65 100644 --- a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/AsyncContextTest.java +++ b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/AsyncContextTest.java @@ -29,7 +29,6 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponseWrapper; -import junit.framework.Assert; import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.LocalConnector; @@ -38,6 +37,7 @@ import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.server.handler.HandlerList; import org.junit.After; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -99,7 +99,7 @@ public class AsyncContextTest BufferedReader br = parseHeader(responseString); - Assert.assertEquals("servlet gets right path","doGet:getServletPath:/servletPath",br.readLine()); + Assert.assertEquals("servlet gets right path", "doGet:getServletPath:/servletPath", br.readLine()); Assert.assertEquals("async context gets right path in get","doGet:async:getServletPath:/servletPath",br.readLine()); Assert.assertEquals("async context gets right path in async","async:run:attr:servletPath:/servletPath",br.readLine()); } @@ -221,7 +221,7 @@ public class AsyncContextTest @Override protected void doGet(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException { - if (((Request)request).getDispatcherType() == DispatcherType.ASYNC) + if (request.getDispatcherType() == DispatcherType.ASYNC) { response.getOutputStream().print("Dispatched back to ForwardingServlet"); } @@ -310,8 +310,6 @@ public class AsyncContextTest asyncContext.start(new AsyncRunnable(asyncContext)); } - return; - } } @@ -326,7 +324,6 @@ public class AsyncContextTest AsyncContext asyncContext = request.startAsync(request, response); response.getOutputStream().print("doGet:async:getServletPath:" + ((HttpServletRequest)asyncContext.getRequest()).getServletPath() + "\n"); asyncContext.start(new AsyncRunnable(asyncContext)); - return; } } diff --git a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/DispatcherTest.java b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/DispatcherTest.java index 75f71f1d2c4..235bea68867 100644 --- a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/DispatcherTest.java +++ b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/DispatcherTest.java @@ -42,7 +42,6 @@ import javax.servlet.http.HttpServletRequestWrapper; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponseWrapper; -import junit.framework.Assert; import org.eclipse.jetty.server.Dispatcher; import org.eclipse.jetty.server.LocalConnector; import org.eclipse.jetty.server.Server; @@ -51,6 +50,7 @@ import org.eclipse.jetty.server.handler.ContextHandlerCollection; import org.eclipse.jetty.server.handler.ResourceHandler; import org.eclipse.jetty.toolchain.test.MavenTestingUtils; import org.junit.After; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; diff --git a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ServletContextHandlerTest.java b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ServletContextHandlerTest.java index b35605371ab..90ea0dc1522 100644 --- a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ServletContextHandlerTest.java +++ b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ServletContextHandlerTest.java @@ -25,7 +25,6 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import junit.framework.AssertionFailedError; import org.eclipse.jetty.security.ConstraintSecurityHandler; import org.eclipse.jetty.security.SecurityHandler; import org.eclipse.jetty.server.LocalConnector; @@ -35,6 +34,7 @@ import org.eclipse.jetty.server.handler.ContextHandler; import org.eclipse.jetty.server.handler.ContextHandlerCollection; import org.eclipse.jetty.server.session.SessionHandler; import org.junit.After; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -185,7 +185,7 @@ public class ServletContextHandlerTest err.append("\n").append(response); System.err.println(err); - throw new AssertionFailedError(err.toString()); + Assert.fail(err.toString()); } return idx; } diff --git a/jetty-spdy/spdy-http-server/src/test/java/org/eclipse/jetty/spdy/server/http/PushStrategyBenchmarkTest.java b/jetty-spdy/spdy-http-server/src/test/java/org/eclipse/jetty/spdy/server/http/PushStrategyBenchmarkTest.java index 5ff3bd49536..903d7ddc387 100644 --- a/jetty-spdy/spdy-http-server/src/test/java/org/eclipse/jetty/spdy/server/http/PushStrategyBenchmarkTest.java +++ b/jetty-spdy/spdy-http-server/src/test/java/org/eclipse/jetty/spdy/server/http/PushStrategyBenchmarkTest.java @@ -33,7 +33,6 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import junit.framework.Assert; import org.eclipse.jetty.client.HttpClient; import org.eclipse.jetty.client.api.ContentResponse; import org.eclipse.jetty.client.api.Response; @@ -51,6 +50,7 @@ import org.eclipse.jetty.spdy.api.Stream; import org.eclipse.jetty.spdy.api.StreamFrameListener; import org.eclipse.jetty.spdy.api.SynInfo; import org.eclipse.jetty.util.Fields; +import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; diff --git a/jetty-spdy/spdy-server/src/test/java/org/eclipse/jetty/spdy/server/SPDYClientFactoryTest.java b/jetty-spdy/spdy-server/src/test/java/org/eclipse/jetty/spdy/server/SPDYClientFactoryTest.java index 46a7b911e86..94a716623e6 100644 --- a/jetty-spdy/spdy-server/src/test/java/org/eclipse/jetty/spdy/server/SPDYClientFactoryTest.java +++ b/jetty-spdy/spdy-server/src/test/java/org/eclipse/jetty/spdy/server/SPDYClientFactoryTest.java @@ -22,10 +22,10 @@ package org.eclipse.jetty.spdy.server; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; -import junit.framework.Assert; import org.eclipse.jetty.spdy.api.GoAwayInfo; import org.eclipse.jetty.spdy.api.Session; import org.eclipse.jetty.spdy.api.server.ServerSessionFrameListener; +import org.junit.Assert; import org.junit.Test; public class SPDYClientFactoryTest extends AbstractTest diff --git a/jetty-spdy/spdy-server/src/test/java/org/eclipse/jetty/spdy/server/SPDYServerConnectorTest.java b/jetty-spdy/spdy-server/src/test/java/org/eclipse/jetty/spdy/server/SPDYServerConnectorTest.java index 8a2308b4ad7..9f3dd15fe9a 100644 --- a/jetty-spdy/spdy-server/src/test/java/org/eclipse/jetty/spdy/server/SPDYServerConnectorTest.java +++ b/jetty-spdy/spdy-server/src/test/java/org/eclipse/jetty/spdy/server/SPDYServerConnectorTest.java @@ -22,10 +22,10 @@ package org.eclipse.jetty.spdy.server; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; -import junit.framework.Assert; import org.eclipse.jetty.spdy.api.GoAwayInfo; import org.eclipse.jetty.spdy.api.Session; import org.eclipse.jetty.spdy.api.SessionFrameListener; +import org.junit.Assert; import org.junit.Test; public class SPDYServerConnectorTest extends AbstractTest diff --git a/jetty-spring/src/test/java/org/eclipse/jetty/spring/SpringXmlConfigurationTest.java b/jetty-spring/src/test/java/org/eclipse/jetty/spring/SpringXmlConfigurationTest.java index 4b607b31735..47ae2d4d833 100644 --- a/jetty-spring/src/test/java/org/eclipse/jetty/spring/SpringXmlConfigurationTest.java +++ b/jetty-spring/src/test/java/org/eclipse/jetty/spring/SpringXmlConfigurationTest.java @@ -29,7 +29,7 @@ import org.junit.Assume; import org.junit.Before; import org.junit.Test; -import static junit.framework.Assert.assertEquals; +import static org.junit.Assert.assertEquals; public class SpringXmlConfigurationTest { diff --git a/jetty-util-ajax/src/test/java/org/eclipse/jetty/util/ajax/JSONTest.java b/jetty-util-ajax/src/test/java/org/eclipse/jetty/util/ajax/JSONTest.java index 428758e6a51..31effead80d 100644 --- a/jetty-util-ajax/src/test/java/org/eclipse/jetty/util/ajax/JSONTest.java +++ b/jetty-util-ajax/src/test/java/org/eclipse/jetty/util/ajax/JSONTest.java @@ -55,10 +55,6 @@ public class JSONTest "\"undefined\": undefined," + "}"; - /* ------------------------------------------------------------ */ - /* (non-Javadoc) - * @see junit.framework.TestCase#setUp() - */ @BeforeClass public static void setUp() throws Exception { diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SslContextFactory.java b/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SslContextFactory.java index 1d2b521feb5..af6cee6b3d5 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SslContextFactory.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SslContextFactory.java @@ -65,7 +65,6 @@ import org.eclipse.jetty.util.security.CertificateValidator; import org.eclipse.jetty.util.security.Password; -/* ------------------------------------------------------------ */ /** * SslContextFactory is used to configure SSL connectors * as well as HttpClient. It holds all SSL parameters and @@ -110,12 +109,12 @@ public class SslContextFactory extends AbstractLifeCycle public static final String PASSWORD_PROPERTY = "org.eclipse.jetty.ssl.password"; /** Excluded protocols. */ - private final Set _excludeProtocols = new LinkedHashSet(); + private final Set _excludeProtocols = new LinkedHashSet<>(); /** Included protocols. */ private Set _includeProtocols = null; /** Excluded cipher suites. */ - private final Set _excludeCipherSuites = new LinkedHashSet(); + private final Set _excludeCipherSuites = new LinkedHashSet<>(); /** Included cipher suites. */ private Set _includeCipherSuites = null; @@ -198,7 +197,6 @@ public class SslContextFactory extends AbstractLifeCycle private boolean _trustAll; - /* ------------------------------------------------------------ */ /** * Construct an instance of SslContextFactory * Default constructor for use in XmlConfiguration files @@ -208,7 +206,6 @@ public class SslContextFactory extends AbstractLifeCycle _trustAll=true; } - /* ------------------------------------------------------------ */ /** * Construct an instance of SslContextFactory * Default constructor for use in XmlConfiguration files @@ -220,7 +217,6 @@ public class SslContextFactory extends AbstractLifeCycle _trustAll=trustAll; } - /* ------------------------------------------------------------ */ /** * Construct an instance of SslContextFactory * @param keyStorePath default keystore location @@ -230,7 +226,6 @@ public class SslContextFactory extends AbstractLifeCycle _keyStorePath = keyStorePath; } - /* ------------------------------------------------------------ */ /** * Create the SSLContext object and start the lifecycle * @see org.eclipse.jetty.util.component.AbstractLifeCycle#doStart() @@ -253,8 +248,9 @@ public class SslContextFactory extends AbstractLifeCycle } SecureRandom secureRandom = (_secureRandomAlgorithm == null)?null:SecureRandom.getInstance(_secureRandomAlgorithm); - _context = SSLContext.getInstance(_sslProtocol); - _context.init(null, trust_managers, secureRandom); + SSLContext context = SSLContext.getInstance(_sslProtocol); + context.init(null, trust_managers, secureRandom); + _context = context; } else { @@ -293,19 +289,25 @@ public class SslContextFactory extends AbstractLifeCycle TrustManager[] trustManagers = getTrustManagers(trustStore,crls); SecureRandom secureRandom = (_secureRandomAlgorithm == null)?null:SecureRandom.getInstance(_secureRandomAlgorithm); - _context = (_sslProvider == null)?SSLContext.getInstance(_sslProtocol):SSLContext.getInstance(_sslProtocol,_sslProvider); - _context.init(keyManagers,trustManagers,secureRandom); - - SSLEngine engine= newSSLEngine(); - - LOG.info("Enabled Protocols {} of {}",Arrays.asList(engine.getEnabledProtocols()),Arrays.asList(engine.getSupportedProtocols())); - if (LOG.isDebugEnabled()) - LOG.debug("Enabled Ciphers {} of {}",Arrays.asList(engine.getEnabledCipherSuites()),Arrays.asList(engine.getSupportedCipherSuites())); + SSLContext context = _sslProvider == null ? SSLContext.getInstance(_sslProtocol) : SSLContext.getInstance(_sslProtocol,_sslProvider); + context.init(keyManagers,trustManagers,secureRandom); + _context = context; } + + SSLEngine engine = newSSLEngine(); + LOG.debug("Enabled Protocols {} of {}",Arrays.asList(engine.getEnabledProtocols()),Arrays.asList(engine.getSupportedProtocols())); + if (LOG.isDebugEnabled()) + LOG.debug("Enabled Ciphers {} of {}",Arrays.asList(engine.getEnabledCipherSuites()),Arrays.asList(engine.getSupportedCipherSuites())); } } - /* ------------------------------------------------------------ */ + @Override + protected void doStop() throws Exception + { + _context = null; + super.doStop(); + } + /** * @return The array of protocol names to exclude from * {@link SSLEngine#setEnabledProtocols(String[])} @@ -315,7 +317,6 @@ public class SslContextFactory extends AbstractLifeCycle return _excludeProtocols.toArray(new String[_excludeProtocols.size()]); } - /* ------------------------------------------------------------ */ /** * @param protocols * The array of protocol names to exclude from @@ -324,12 +325,10 @@ public class SslContextFactory extends AbstractLifeCycle public void setExcludeProtocols(String... protocols) { checkNotStarted(); - _excludeProtocols.clear(); _excludeProtocols.addAll(Arrays.asList(protocols)); } - /* ------------------------------------------------------------ */ /** * @param protocol Protocol names to add to {@link SSLEngine#setEnabledProtocols(String[])} */ @@ -339,7 +338,6 @@ public class SslContextFactory extends AbstractLifeCycle _excludeProtocols.addAll(Arrays.asList(protocol)); } - /* ------------------------------------------------------------ */ /** * @return The array of protocol names to include in * {@link SSLEngine#setEnabledProtocols(String[])} @@ -349,7 +347,6 @@ public class SslContextFactory extends AbstractLifeCycle return _includeProtocols.toArray(new String[_includeProtocols.size()]); } - /* ------------------------------------------------------------ */ /** * @param protocols * The array of protocol names to include in @@ -358,11 +355,9 @@ public class SslContextFactory extends AbstractLifeCycle public void setIncludeProtocols(String... protocols) { checkNotStarted(); - - _includeProtocols = new LinkedHashSet(Arrays.asList(protocols)); + _includeProtocols = new LinkedHashSet<>(Arrays.asList(protocols)); } - /* ------------------------------------------------------------ */ /** * @return The array of cipher suite names to exclude from * {@link SSLEngine#setEnabledCipherSuites(String[])} @@ -372,7 +367,6 @@ public class SslContextFactory extends AbstractLifeCycle return _excludeCipherSuites.toArray(new String[_excludeCipherSuites.size()]); } - /* ------------------------------------------------------------ */ /** * @param cipherSuites * The array of cipher suite names to exclude from @@ -385,7 +379,6 @@ public class SslContextFactory extends AbstractLifeCycle _excludeCipherSuites.addAll(Arrays.asList(cipherSuites)); } - /* ------------------------------------------------------------ */ /** * @param cipher Cipher names to add to {@link SSLEngine#setEnabledCipherSuites(String[])} */ @@ -395,7 +388,6 @@ public class SslContextFactory extends AbstractLifeCycle _excludeCipherSuites.addAll(Arrays.asList(cipher)); } - /* ------------------------------------------------------------ */ /** * @return The array of cipher suite names to include in * {@link SSLEngine#setEnabledCipherSuites(String[])} @@ -405,7 +397,6 @@ public class SslContextFactory extends AbstractLifeCycle return _includeCipherSuites.toArray(new String[_includeCipherSuites.size()]); } - /* ------------------------------------------------------------ */ /** * @param cipherSuites * The array of cipher suite names to include in @@ -414,11 +405,9 @@ public class SslContextFactory extends AbstractLifeCycle public void setIncludeCipherSuites(String... cipherSuites) { checkNotStarted(); - - _includeCipherSuites = new LinkedHashSet(Arrays.asList(cipherSuites)); + _includeCipherSuites = new LinkedHashSet<>(Arrays.asList(cipherSuites)); } - /* ------------------------------------------------------------ */ /** * @return The file or URL of the SSL Key store. */ @@ -427,7 +416,6 @@ public class SslContextFactory extends AbstractLifeCycle return _keyStorePath; } - /* ------------------------------------------------------------ */ /** * @param keyStorePath * The file or URL of the SSL Key store. @@ -435,11 +423,9 @@ public class SslContextFactory extends AbstractLifeCycle public void setKeyStorePath(String keyStorePath) { checkNotStarted(); - _keyStorePath = keyStorePath; } - /* ------------------------------------------------------------ */ /** * @return The provider of the key store */ @@ -448,7 +434,6 @@ public class SslContextFactory extends AbstractLifeCycle return _keyStoreProvider; } - /* ------------------------------------------------------------ */ /** * @param keyStoreProvider * The provider of the key store @@ -456,11 +441,9 @@ public class SslContextFactory extends AbstractLifeCycle public void setKeyStoreProvider(String keyStoreProvider) { checkNotStarted(); - _keyStoreProvider = keyStoreProvider; } - /* ------------------------------------------------------------ */ /** * @return The type of the key store (default "JKS") */ @@ -469,7 +452,6 @@ public class SslContextFactory extends AbstractLifeCycle return (_keyStoreType); } - /* ------------------------------------------------------------ */ /** * @param keyStoreType * The type of the key store (default "JKS") @@ -477,11 +459,9 @@ public class SslContextFactory extends AbstractLifeCycle public void setKeyStoreType(String keyStoreType) { checkNotStarted(); - _keyStoreType = keyStoreType; } - /* ------------------------------------------------------------ */ /** * @return Alias of SSL certificate for the connector */ @@ -490,7 +470,6 @@ public class SslContextFactory extends AbstractLifeCycle return _certAlias; } - /* ------------------------------------------------------------ */ /** * @param certAlias * Alias of SSL certificate for the connector @@ -498,11 +477,9 @@ public class SslContextFactory extends AbstractLifeCycle public void setCertAlias(String certAlias) { checkNotStarted(); - _certAlias = certAlias; } - /* ------------------------------------------------------------ */ /** * @return The file name or URL of the trust store location */ @@ -511,7 +488,6 @@ public class SslContextFactory extends AbstractLifeCycle return _trustStorePath; } - /* ------------------------------------------------------------ */ /** * @param trustStorePath * The file name or URL of the trust store location @@ -519,11 +495,9 @@ public class SslContextFactory extends AbstractLifeCycle public void setTrustStorePath(String trustStorePath) { checkNotStarted(); - _trustStorePath = trustStorePath; } - /* ------------------------------------------------------------ */ /** * @return The provider of the trust store */ @@ -532,7 +506,6 @@ public class SslContextFactory extends AbstractLifeCycle return _trustStoreProvider; } - /* ------------------------------------------------------------ */ /** * @param trustStoreProvider * The provider of the trust store @@ -540,11 +513,9 @@ public class SslContextFactory extends AbstractLifeCycle public void setTrustStoreProvider(String trustStoreProvider) { checkNotStarted(); - _trustStoreProvider = trustStoreProvider; } - /* ------------------------------------------------------------ */ /** * @return The type of the trust store (default "JKS") */ @@ -553,7 +524,6 @@ public class SslContextFactory extends AbstractLifeCycle return _trustStoreType; } - /* ------------------------------------------------------------ */ /** * @param trustStoreType * The type of the trust store (default "JKS") @@ -561,11 +531,9 @@ public class SslContextFactory extends AbstractLifeCycle public void setTrustStoreType(String trustStoreType) { checkNotStarted(); - _trustStoreType = trustStoreType; } - /* ------------------------------------------------------------ */ /** * @return True if SSL needs client authentication. * @see SSLEngine#getNeedClientAuth() @@ -575,7 +543,6 @@ public class SslContextFactory extends AbstractLifeCycle return _needClientAuth; } - /* ------------------------------------------------------------ */ /** * @param needClientAuth * True if SSL needs client authentication. @@ -584,11 +551,9 @@ public class SslContextFactory extends AbstractLifeCycle public void setNeedClientAuth(boolean needClientAuth) { checkNotStarted(); - _needClientAuth = needClientAuth; } - /* ------------------------------------------------------------ */ /** * @return True if SSL wants client authentication. * @see SSLEngine#getWantClientAuth() @@ -598,7 +563,6 @@ public class SslContextFactory extends AbstractLifeCycle return _wantClientAuth; } - /* ------------------------------------------------------------ */ /** * @param wantClientAuth * True if SSL wants client authentication. @@ -607,22 +571,9 @@ public class SslContextFactory extends AbstractLifeCycle public void setWantClientAuth(boolean wantClientAuth) { checkNotStarted(); - _wantClientAuth = wantClientAuth; } - /* ------------------------------------------------------------ */ - /** - * @return true if SSL certificate has to be validated - * @deprecated - */ - @Deprecated - public boolean getValidateCerts() - { - return _validateCerts; - } - - /* ------------------------------------------------------------ */ /** * @return true if SSL certificate has to be validated */ @@ -631,7 +582,6 @@ public class SslContextFactory extends AbstractLifeCycle return _validateCerts; } - /* ------------------------------------------------------------ */ /** * @param validateCerts * true if SSL certificates have to be validated @@ -639,11 +589,9 @@ public class SslContextFactory extends AbstractLifeCycle public void setValidateCerts(boolean validateCerts) { checkNotStarted(); - _validateCerts = validateCerts; } - /* ------------------------------------------------------------ */ /** * @return true if SSL certificates of the peer have to be validated */ @@ -652,7 +600,6 @@ public class SslContextFactory extends AbstractLifeCycle return _validatePeerCerts; } - /* ------------------------------------------------------------ */ /** * @param validatePeerCerts * true if SSL certificates of the peer have to be validated @@ -660,12 +607,10 @@ public class SslContextFactory extends AbstractLifeCycle public void setValidatePeerCerts(boolean validatePeerCerts) { checkNotStarted(); - _validatePeerCerts = validatePeerCerts; } - /* ------------------------------------------------------------ */ /** * @param password * The password for the key store @@ -673,11 +618,9 @@ public class SslContextFactory extends AbstractLifeCycle public void setKeyStorePassword(String password) { checkNotStarted(); - _keyStorePassword = Password.getPassword(PASSWORD_PROPERTY,password,null); } - /* ------------------------------------------------------------ */ /** * @param password * The password (if any) for the specific key within the key store @@ -685,11 +628,9 @@ public class SslContextFactory extends AbstractLifeCycle public void setKeyManagerPassword(String password) { checkNotStarted(); - _keyManagerPassword = Password.getPassword(KEYPASSWORD_PROPERTY,password,null); } - /* ------------------------------------------------------------ */ /** * @param password * The password for the trust store @@ -697,11 +638,9 @@ public class SslContextFactory extends AbstractLifeCycle public void setTrustStorePassword(String password) { checkNotStarted(); - _trustStorePassword = Password.getPassword(PASSWORD_PROPERTY,password,null); } - /* ------------------------------------------------------------ */ /** * @return The SSL provider name, which if set is passed to * {@link SSLContext#getInstance(String, String)} @@ -711,7 +650,6 @@ public class SslContextFactory extends AbstractLifeCycle return _sslProvider; } - /* ------------------------------------------------------------ */ /** * @param provider * The SSL provider name, which if set is passed to @@ -720,11 +658,9 @@ public class SslContextFactory extends AbstractLifeCycle public void setProvider(String provider) { checkNotStarted(); - _sslProvider = provider; } - /* ------------------------------------------------------------ */ /** * @return The SSL protocol (default "TLS") passed to * {@link SSLContext#getInstance(String, String)} @@ -734,7 +670,6 @@ public class SslContextFactory extends AbstractLifeCycle return _sslProtocol; } - /* ------------------------------------------------------------ */ /** * @param protocol * The SSL protocol (default "TLS") passed to @@ -743,11 +678,9 @@ public class SslContextFactory extends AbstractLifeCycle public void setProtocol(String protocol) { checkNotStarted(); - _sslProtocol = protocol; } - /* ------------------------------------------------------------ */ /** * @return The algorithm name, which if set is passed to * {@link SecureRandom#getInstance(String)} to obtain the {@link SecureRandom} instance passed to @@ -758,7 +691,6 @@ public class SslContextFactory extends AbstractLifeCycle return _secureRandomAlgorithm; } - /* ------------------------------------------------------------ */ /** * @param algorithm * The algorithm name, which if set is passed to @@ -768,11 +700,9 @@ public class SslContextFactory extends AbstractLifeCycle public void setSecureRandomAlgorithm(String algorithm) { checkNotStarted(); - _secureRandomAlgorithm = algorithm; } - /* ------------------------------------------------------------ */ /** * @return The algorithm name (default "SunX509") used by the {@link KeyManagerFactory} */ @@ -781,7 +711,6 @@ public class SslContextFactory extends AbstractLifeCycle return (_keyManagerFactoryAlgorithm); } - /* ------------------------------------------------------------ */ /** * @param algorithm * The algorithm name (default "SunX509") used by the {@link KeyManagerFactory} @@ -789,11 +718,9 @@ public class SslContextFactory extends AbstractLifeCycle public void setSslKeyManagerFactoryAlgorithm(String algorithm) { checkNotStarted(); - _keyManagerFactoryAlgorithm = algorithm; } - /* ------------------------------------------------------------ */ /** * @return The algorithm name (default "SunX509") used by the {@link TrustManagerFactory} */ @@ -802,7 +729,6 @@ public class SslContextFactory extends AbstractLifeCycle return (_trustManagerFactoryAlgorithm); } - /* ------------------------------------------------------------ */ /** * @return True if all certificates should be trusted if there is no KeyStore or TrustStore */ @@ -811,7 +737,6 @@ public class SslContextFactory extends AbstractLifeCycle return _trustAll; } - /* ------------------------------------------------------------ */ /** * @param trustAll True if all certificates should be trusted if there is no KeyStore or TrustStore */ @@ -820,7 +745,6 @@ public class SslContextFactory extends AbstractLifeCycle _trustAll = trustAll; } - /* ------------------------------------------------------------ */ /** * @param algorithm * The algorithm name (default "SunX509") used by the {@link TrustManagerFactory} @@ -829,11 +753,9 @@ public class SslContextFactory extends AbstractLifeCycle public void setTrustManagerFactoryAlgorithm(String algorithm) { checkNotStarted(); - _trustManagerFactoryAlgorithm = algorithm; } - /* ------------------------------------------------------------ */ /** * @return Path to file that contains Certificate Revocation List */ @@ -842,7 +764,6 @@ public class SslContextFactory extends AbstractLifeCycle return _crlPath; } - /* ------------------------------------------------------------ */ /** * @param crlPath * Path to file that contains Certificate Revocation List @@ -850,11 +771,9 @@ public class SslContextFactory extends AbstractLifeCycle public void setCrlPath(String crlPath) { checkNotStarted(); - _crlPath = crlPath; } - /* ------------------------------------------------------------ */ /** * @return Maximum number of intermediate certificates in * the certification path (-1 for unlimited) @@ -864,7 +783,6 @@ public class SslContextFactory extends AbstractLifeCycle return _maxCertPathLength; } - /* ------------------------------------------------------------ */ /** * @param maxCertPathLength * maximum number of intermediate certificates in @@ -873,11 +791,9 @@ public class SslContextFactory extends AbstractLifeCycle public void setMaxCertPathLength(int maxCertPathLength) { checkNotStarted(); - _maxCertPathLength = maxCertPathLength; } - /* ------------------------------------------------------------ */ /** * @return The SSLContext */ @@ -888,7 +804,6 @@ public class SslContextFactory extends AbstractLifeCycle return _context; } - /* ------------------------------------------------------------ */ /** * @param sslContext * Set a preconfigured SSLContext @@ -896,11 +811,9 @@ public class SslContextFactory extends AbstractLifeCycle public void setSslContext(SSLContext sslContext) { checkNotStarted(); - _context = sslContext; } - /* ------------------------------------------------------------ */ /** * Override this method to provide alternate way to load a keystore. * @@ -914,7 +827,6 @@ public class SslContextFactory extends AbstractLifeCycle _keyStorePassword==null? null: _keyStorePassword.toString()); } - /* ------------------------------------------------------------ */ /** * Override this method to provide alternate way to load a truststore. * @@ -928,7 +840,6 @@ public class SslContextFactory extends AbstractLifeCycle _trustStorePassword==null? null: _trustStorePassword.toString()); } - /* ------------------------------------------------------------ */ /** * Loads keystore using an input stream or a file path in the same * order of precedence. @@ -952,7 +863,6 @@ public class SslContextFactory extends AbstractLifeCycle return CertificateUtils.getKeyStore(storeStream, storePath, storeType, storeProvider, storePassword); } - /* ------------------------------------------------------------ */ /** * Loads certificate revocation list (CRL) from a file. * @@ -968,7 +878,6 @@ public class SslContextFactory extends AbstractLifeCycle return CertificateUtils.loadCRL(crlPath); } - /* ------------------------------------------------------------ */ protected KeyManager[] getKeyManagers(KeyStore keyStore) throws Exception { KeyManager[] managers = null; @@ -994,7 +903,6 @@ public class SslContextFactory extends AbstractLifeCycle return managers; } - /* ------------------------------------------------------------ */ protected TrustManager[] getTrustManagers(KeyStore trustStore, Collection crls) throws Exception { TrustManager[] managers = null; @@ -1051,7 +959,6 @@ public class SslContextFactory extends AbstractLifeCycle return managers; } - /* ------------------------------------------------------------ */ /** * Check KeyStore Configuration. Ensures that if keystore has been * configured but there's no truststore, that keystore is @@ -1061,8 +968,7 @@ public class SslContextFactory extends AbstractLifeCycle public void checkKeyStore() { if (_context != null) - return; //nothing to check if using preconfigured context - + return; if (_keyStore == null && _keyStoreInputStream == null && _keyStorePath == null) throw new IllegalStateException("SSL doesn't have a valid keystore"); @@ -1099,7 +1005,6 @@ public class SslContextFactory extends AbstractLifeCycle } } - /* ------------------------------------------------------------ */ /** * Select protocols to be used by the connector * based on configured inclusion and exclusion lists @@ -1110,7 +1015,7 @@ public class SslContextFactory extends AbstractLifeCycle */ public String[] selectProtocols(String[] enabledProtocols, String[] supportedProtocols) { - Set selected_protocols = new LinkedHashSet(); + Set selected_protocols = new LinkedHashSet<>(); // Set the starting protocols - either from the included or enabled list if (_includeProtocols!=null) @@ -1131,7 +1036,6 @@ public class SslContextFactory extends AbstractLifeCycle return selected_protocols.toArray(new String[selected_protocols.size()]); } - /* ------------------------------------------------------------ */ /** * Select cipher suites to be used by the connector * based on configured inclusion and exclusion lists @@ -1142,7 +1046,7 @@ public class SslContextFactory extends AbstractLifeCycle */ public String[] selectCipherSuites(String[] enabledCipherSuites, String[] supportedCipherSuites) { - Set selected_ciphers = new LinkedHashSet(); + Set selected_ciphers = new LinkedHashSet<>(); // Set the starting ciphers - either from the included or enabled list if (_includeCipherSuites!=null) @@ -1162,7 +1066,6 @@ public class SslContextFactory extends AbstractLifeCycle return selected_ciphers.toArray(new String[selected_ciphers.size()]); } - /* ------------------------------------------------------------ */ /** * Check if the lifecycle has been started and throw runtime exception */ @@ -1172,7 +1075,6 @@ public class SslContextFactory extends AbstractLifeCycle throw new IllegalStateException("Cannot modify configuration when "+getState()); } - /* ------------------------------------------------------------ */ /** * @return true if CRL Distribution Points support is enabled */ @@ -1181,18 +1083,15 @@ public class SslContextFactory extends AbstractLifeCycle return _enableCRLDP; } - /* ------------------------------------------------------------ */ /** Enables CRL Distribution Points Support * @param enableCRLDP true - turn on, false - turns off */ public void setEnableCRLDP(boolean enableCRLDP) { checkNotStarted(); - _enableCRLDP = enableCRLDP; } - /* ------------------------------------------------------------ */ /** * @return true if On-Line Certificate Status Protocol support is enabled */ @@ -1201,18 +1100,15 @@ public class SslContextFactory extends AbstractLifeCycle return _enableOCSP; } - /* ------------------------------------------------------------ */ /** Enables On-Line Certificate Status Protocol support * @param enableOCSP true - turn on, false - turn off */ public void setEnableOCSP(boolean enableOCSP) { checkNotStarted(); - _enableOCSP = enableOCSP; } - /* ------------------------------------------------------------ */ /** * @return Location of the OCSP Responder */ @@ -1221,47 +1117,39 @@ public class SslContextFactory extends AbstractLifeCycle return _ocspResponderURL; } - /* ------------------------------------------------------------ */ /** Set the location of the OCSP Responder. * @param ocspResponderURL location of the OCSP Responder */ public void setOcspResponderURL(String ocspResponderURL) { checkNotStarted(); - _ocspResponderURL = ocspResponderURL; } - /* ------------------------------------------------------------ */ /** Set the key store. * @param keyStore the key store to set */ public void setKeyStore(KeyStore keyStore) { checkNotStarted(); - _keyStore = keyStore; } - /* ------------------------------------------------------------ */ /** Set the trust store. * @param trustStore the trust store to set */ public void setTrustStore(KeyStore trustStore) { checkNotStarted(); - _trustStore = trustStore; } - /* ------------------------------------------------------------ */ /** Set the key store resource. * @param resource the key store resource to set */ public void setKeyStoreResource(Resource resource) { checkNotStarted(); - try { _keyStoreInputStream = resource.getInputStream(); @@ -1273,14 +1161,12 @@ public class SslContextFactory extends AbstractLifeCycle } } - /* ------------------------------------------------------------ */ /** Set the trust store resource. * @param resource the trust store resource to set */ public void setTrustStoreResource(Resource resource) { checkNotStarted(); - try { _trustStoreInputStream = resource.getInputStream(); @@ -1292,7 +1178,6 @@ public class SslContextFactory extends AbstractLifeCycle } } - /* ------------------------------------------------------------ */ /** * @return true if SSL Session caching is enabled */ @@ -1301,7 +1186,6 @@ public class SslContextFactory extends AbstractLifeCycle return _sessionCachingEnabled; } - /* ------------------------------------------------------------ */ /** Set the flag to enable SSL Session caching. * @param enableSessionCaching the value of the flag */ @@ -1310,7 +1194,6 @@ public class SslContextFactory extends AbstractLifeCycle _sessionCachingEnabled = enableSessionCaching; } - /* ------------------------------------------------------------ */ /** Get SSL session cache size. * @return SSL session cache size */ @@ -1319,7 +1202,6 @@ public class SslContextFactory extends AbstractLifeCycle return _sslSessionCacheSize; } - /* ------------------------------------------------------------ */ /** SEt SSL session cache size. * @param sslSessionCacheSize SSL session cache size to set */ @@ -1328,7 +1210,6 @@ public class SslContextFactory extends AbstractLifeCycle _sslSessionCacheSize = sslSessionCacheSize; } - /* ------------------------------------------------------------ */ /** Get SSL session timeout. * @return SSL session timeout */ @@ -1337,7 +1218,6 @@ public class SslContextFactory extends AbstractLifeCycle return _sslSessionTimeout; } - /* ------------------------------------------------------------ */ /** Set SSL session timeout. * @param sslSessionTimeout SSL session timeout to set */ @@ -1347,7 +1227,6 @@ public class SslContextFactory extends AbstractLifeCycle } - /* ------------------------------------------------------------ */ public SSLServerSocket newSslServerSocket(String host,int port,int backlog) throws IOException { SSLServerSocketFactory factory = _context.getServerSocketFactory(); @@ -1370,7 +1249,6 @@ public class SslContextFactory extends AbstractLifeCycle return socket; } - /* ------------------------------------------------------------ */ public SSLSocket newSslSocket() throws IOException { SSLSocketFactory factory = _context.getSocketFactory(); @@ -1390,19 +1268,18 @@ public class SslContextFactory extends AbstractLifeCycle return socket; } - /* ------------------------------------------------------------ */ public SSLEngine newSSLEngine(String host, int port) { if (!isRunning()) throw new IllegalStateException("!STARTED"); + SSLContext context = _context; SSLEngine sslEngine=isSessionCachingEnabled() - ?_context.createSSLEngine(host, port) - :_context.createSSLEngine(); + ? context.createSSLEngine(host, port) + : context.createSSLEngine(); customize(sslEngine); return sslEngine; } - /* ------------------------------------------------------------ */ public SSLEngine newSSLEngine() { if (!isRunning()) @@ -1412,7 +1289,6 @@ public class SslContextFactory extends AbstractLifeCycle return sslEngine; } - /* ------------------------------------------------------------ */ public void customize(SSLEngine sslEngine) { if (getWantClientAuth()) @@ -1427,13 +1303,11 @@ public class SslContextFactory extends AbstractLifeCycle sslEngine.setEnabledProtocols(selectProtocols(sslEngine.getEnabledProtocols(),sslEngine.getSupportedProtocols())); } - /* ------------------------------------------------------------ */ public SSLEngine newSSLEngine(InetSocketAddress address) { return address != null ? newSSLEngine(address.getAddress().getHostAddress(), address.getPort()) : newSSLEngine(); } - /* ------------------------------------------------------------ */ @Override public String toString() { diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/DateCacheTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/DateCacheTest.java index 1c1771e3b0f..1de2faeff5c 100644 --- a/jetty-util/src/test/java/org/eclipse/jetty/util/DateCacheTest.java +++ b/jetty-util/src/test/java/org/eclipse/jetty/util/DateCacheTest.java @@ -23,9 +23,9 @@ import java.util.Locale; import java.util.TimeZone; import java.util.concurrent.TimeUnit; -import junit.framework.Assert; import org.eclipse.jetty.toolchain.test.AdvancedRunner; import org.eclipse.jetty.toolchain.test.annotation.Slow; +import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; @@ -69,7 +69,6 @@ public class DateCacheTest TimeUnit.MILLISECONDS.sleep(50); now=System.currentTimeMillis(); } - Assert.assertTrue(hits/10 > misses); + Assert.assertTrue(hits / 10 > misses); } - } diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/MultiPartInputStreamTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/MultiPartInputStreamTest.java index bac19ae1549..e282ce5ea5e 100644 --- a/jetty-util/src/test/java/org/eclipse/jetty/util/MultiPartInputStreamTest.java +++ b/jetty-util/src/test/java/org/eclipse/jetty/util/MultiPartInputStreamTest.java @@ -28,28 +28,34 @@ import javax.servlet.MultipartConfigElement; import javax.servlet.ServletException; import javax.servlet.http.Part; -import junit.framework.TestCase; import org.eclipse.jetty.util.MultiPartInputStream.MultiPart; +import org.junit.Test; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.not; import static org.hamcrest.Matchers.notNullValue; import static org.hamcrest.Matchers.nullValue; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; /** * MultiPartInputStreamTest * * */ -public class MultiPartInputStreamTest extends TestCase +public class MultiPartInputStreamTest { private static final String FILENAME = "stuff.txt"; protected String _contentType = "multipart/form-data, boundary=AaB03x"; protected String _multi = createMultipartRequestString(FILENAME); protected String _dirname = System.getProperty("java.io.tmpdir")+File.separator+"myfiles-"+System.currentTimeMillis(); - + @Test public void testNonMultiPartRequest() throws Exception { @@ -61,6 +67,7 @@ public class MultiPartInputStreamTest extends TestCase assertTrue(mpis.getParts().isEmpty()); } + @Test public void testNoLimits() throws Exception { @@ -73,6 +80,7 @@ public class MultiPartInputStreamTest extends TestCase assertFalse(parts.isEmpty()); } + @Test public void testRequestTooBig () throws Exception { @@ -93,6 +101,7 @@ public class MultiPartInputStreamTest extends TestCase } } + @Test public void testFileTooBig() throws Exception { @@ -113,13 +122,14 @@ public class MultiPartInputStreamTest extends TestCase } } - + @Test public void testMulti () throws Exception { testMulti(FILENAME); } + @Test public void testMultiWithSpaceInFilename() throws Exception { testMulti("stuff with spaces.txt"); @@ -164,9 +174,9 @@ public class MultiPartInputStreamTest extends TestCase assertThat(stuff.getHeader("content-disposition"),is("form-data; name=\"stuff\"; filename=\"" + filename + "\"")); assertThat(stuff.getHeaderNames().size(),is(2)); assertThat(stuff.getSize(),is(51L)); - f = ((MultiPartInputStream.MultiPart)stuff).getFile(); + f = stuff.getFile(); assertThat(f,notNullValue()); // longer than 100 bytes, should already be a file - assertThat(((MultiPartInputStream.MultiPart)stuff).getBytes(),nullValue()); //not in internal buffer any more + assertThat(stuff.getBytes(),nullValue()); //not in internal buffer any more assertThat(f.exists(),is(true)); assertThat(f.getName(),is(not("stuff with space.txt"))); stuff.write(filename); @@ -174,6 +184,7 @@ public class MultiPartInputStreamTest extends TestCase assertThat(f.exists(),is(true)); } + @Test public void testMultiSameNames () throws Exception { diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/StringUtilTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/StringUtilTest.java index 8b7f75e8352..2b722fcd7fa 100644 --- a/jetty-util/src/test/java/org/eclipse/jetty/util/StringUtilTest.java +++ b/jetty-util/src/test/java/org/eclipse/jetty/util/StringUtilTest.java @@ -18,18 +18,13 @@ package org.eclipse.jetty.util; -import junit.framework.Assert; +import org.junit.Assert; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; - -/** - * - * - */ public class StringUtilTest { @Test diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/component/AggregateLifeCycleTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/component/AggregateLifeCycleTest.java index e5cd7d58934..750fe4f73b8 100644 --- a/jetty-util/src/test/java/org/eclipse/jetty/util/component/AggregateLifeCycleTest.java +++ b/jetty-util/src/test/java/org/eclipse/jetty/util/component/AggregateLifeCycleTest.java @@ -23,8 +23,8 @@ import java.io.IOException; import java.io.StringReader; import java.util.concurrent.atomic.AtomicInteger; -import junit.framework.Assert; import org.eclipse.jetty.util.TypeUtil; +import org.junit.Assert; import org.junit.Test; @@ -69,7 +69,7 @@ public class AggregateLifeCycleTest a0.addBean(a1); a0.start(); - Assert.assertEquals(1,started.get()); + Assert.assertEquals(1, started.get()); Assert.assertEquals(0,stopped.get()); Assert.assertEquals(0,destroyed.get()); @@ -250,7 +250,7 @@ public class AggregateLifeCycleTest dump=check(dump," += org.eclipse.jetty.util.component.AggregateLife"); dump=check(dump," += org.eclipse.jetty.util.component.AggregateLife"); dump=check(dump,""); - + AggregateLifeCycle aa2 = new AggregateLifeCycle(); a0.addBean(aa2,false); dump=trim(a0.dump()); @@ -259,7 +259,7 @@ public class AggregateLifeCycleTest dump=check(dump," += org.eclipse.jetty.util.component.AggregateLife"); dump=check(dump," +~ org.eclipse.jetty.util.component.AggregateLife"); dump=check(dump,""); - + aa1.start(); a0.start(); dump=trim(a0.dump()); @@ -268,14 +268,14 @@ public class AggregateLifeCycleTest dump=check(dump," +~ org.eclipse.jetty.util.component.AggregateLife"); dump=check(dump," +~ org.eclipse.jetty.util.component.AggregateLife"); dump=check(dump,""); - + a0.manage(aa1); a0.removeBean(aa2); dump=trim(a0.dump()); dump=check(dump,"org.eclipse.jetty.util.component.AggregateLifeCycl"); dump=check(dump," +- org.eclipse.jetty.util.component.AggregateLife"); dump=check(dump," +- org.eclipse.jetty.util.component.AggregateLife"); - dump=check(dump,""); + dump=check(dump,""); AggregateLifeCycle aaa0 = new AggregateLifeCycle(); aa0.addBean(aaa0); diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/ssl/SslContextFactoryTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/ssl/SslContextFactoryTest.java index 1268f4b4b82..b4dab77afc0 100644 --- a/jetty-util/src/test/java/org/eclipse/jetty/util/ssl/SslContextFactoryTest.java +++ b/jetty-util/src/test/java/org/eclipse/jetty/util/ssl/SslContextFactoryTest.java @@ -30,10 +30,10 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; -import static junit.framework.Assert.assertTrue; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; public class SslContextFactoryTest diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/thread/QueuedThreadPoolTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/thread/QueuedThreadPoolTest.java index c0516001a10..35ec3eed654 100644 --- a/jetty-util/src/test/java/org/eclipse/jetty/util/thread/QueuedThreadPoolTest.java +++ b/jetty-util/src/test/java/org/eclipse/jetty/util/thread/QueuedThreadPoolTest.java @@ -22,9 +22,9 @@ import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; -import junit.framework.Assert; import org.eclipse.jetty.toolchain.test.AdvancedRunner; import org.eclipse.jetty.toolchain.test.annotation.Slow; +import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; @@ -77,9 +77,9 @@ public class QueuedThreadPoolTest tp.setMaxThreads(10); tp.setMaxIdleTimeMs(1000); tp.setThreadsPriority(Thread.NORM_PRIORITY-1); - + tp.start(); - + waitForThreads(tp,5); waitForIdle(tp,5); @@ -106,7 +106,7 @@ public class QueuedThreadPoolTest jobs[i]=new RunningJob(); tp.dispatch(jobs[i]); } - + waitForIdle(tp,1); waitForThreads(tp,6); @@ -238,7 +238,7 @@ public class QueuedThreadPoolTest {} now=System.currentTimeMillis(); } - Assert.assertEquals(idle,tp.getIdleThreads()); + Assert.assertEquals(idle, tp.getIdleThreads()); } private void waitForThreads(QueuedThreadPool tp, int threads) diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/thread/TimeoutTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/thread/TimeoutTest.java index cfa9a961a5a..f56b93994c3 100644 --- a/jetty-util/src/test/java/org/eclipse/jetty/util/thread/TimeoutTest.java +++ b/jetty-util/src/test/java/org/eclipse/jetty/util/thread/TimeoutTest.java @@ -29,16 +29,12 @@ import static org.junit.Assert.assertEquals; public class TimeoutTest { - private boolean _stress=Boolean.getBoolean("STRESS"); + private boolean _stress=Boolean.getBoolean("STRESS"); Object lock = new Object(); Timeout timeout = new Timeout(null); Timeout.Task[] tasks; - /* ------------------------------------------------------------ */ - /* - * @see junit.framework.TestCase#setUp() - */ @Before public void setUp() throws Exception { diff --git a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppContextTest.java b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppContextTest.java index 5276b2d9a29..bcae52f4e86 100644 --- a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppContextTest.java +++ b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppContextTest.java @@ -27,11 +27,11 @@ import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; -import junit.framework.Assert; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.HandlerList; import org.eclipse.jetty.util.resource.Resource; import org.eclipse.jetty.util.resource.ResourceCollection; +import org.junit.Assert; import org.junit.Test; import static org.junit.Assert.assertFalse; diff --git a/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/WebSocketLoadRFC6455Test.java b/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/WebSocketLoadRFC6455Test.java index 376ed2b5d29..0ffa6c97fe1 100644 --- a/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/WebSocketLoadRFC6455Test.java +++ b/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/WebSocketLoadRFC6455Test.java @@ -31,10 +31,9 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; -import junit.framework.Assert; import org.eclipse.jetty.io.EndPoint; -import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.util.thread.QueuedThreadPool; import org.eclipse.jetty.websocket.core.api.WebSocketBehavior; @@ -46,6 +45,7 @@ import org.eclipse.jetty.websocket.core.protocol.Parser; import org.eclipse.jetty.websocket.core.protocol.WebSocketFrame; import org.eclipse.jetty.websocket.server.examples.MyEchoSocket; import org.junit.AfterClass; +import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; @@ -142,7 +142,7 @@ public class WebSocketLoadRFC6455Test // TODO: Send it // TODO: Receive response - Assert.assertEquals(message,_response.toString()); + Assert.assertEquals(message, _response.toString()); latch.countDown(); } } diff --git a/jetty-xml/src/test/java/org/eclipse/jetty/xml/XmlConfigurationTest.java b/jetty-xml/src/test/java/org/eclipse/jetty/xml/XmlConfigurationTest.java index 1d75992d4a5..e1215beb97b 100644 --- a/jetty-xml/src/test/java/org/eclipse/jetty/xml/XmlConfigurationTest.java +++ b/jetty-xml/src/test/java/org/eclipse/jetty/xml/XmlConfigurationTest.java @@ -25,10 +25,10 @@ import java.util.Map; import org.junit.Assert; import org.junit.Test; -import static junit.framework.Assert.assertEquals; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.not; import static org.hamcrest.CoreMatchers.nullValue; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; diff --git a/pom.xml b/pom.xml index 4b7890f942c..cb14506b77a 100644 --- a/pom.xml +++ b/pom.xml @@ -509,7 +509,7 @@ junit junit - 4.8.1 + 4.10 org.hamcrest diff --git a/test-jetty-webapp/src/test/java/org/eclipse/jetty/DispatchServletTest.java b/test-jetty-webapp/src/test/java/org/eclipse/jetty/DispatchServletTest.java index 351e3ca8213..6f800eb7de7 100644 --- a/test-jetty-webapp/src/test/java/org/eclipse/jetty/DispatchServletTest.java +++ b/test-jetty-webapp/src/test/java/org/eclipse/jetty/DispatchServletTest.java @@ -19,15 +19,18 @@ package org.eclipse.jetty; import com.acme.DispatchServlet; -import junit.framework.TestCase; import org.eclipse.jetty.servlet.DefaultServlet; import org.eclipse.jetty.servlet.ServletHolder; import org.eclipse.jetty.servlet.ServletTester; +import org.junit.Test; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; /** * Simple tests against DispatchServlet. */ -public class DispatchServletTest extends TestCase +public class DispatchServletTest { /** * As filed in JETTY-978. @@ -65,6 +68,7 @@ public class DispatchServletTest extends TestCase * * @throws Exception */ + @Test public void testSelfRefForwardDenialOfService() throws Exception { ServletTester tester = new ServletTester(); @@ -74,8 +78,8 @@ public class DispatchServletTest extends TestCase tester.addServlet(DefaultServlet.class,"/"); tester.start(); - StringBuffer req1 = new StringBuffer(); - req1.append("GET /tests/dispatch/includeN/"+dispatch.getName()+" HTTP/1.1\n"); + StringBuilder req1 = new StringBuilder(); + req1.append("GET /tests/dispatch/includeN/").append(dispatch.getName()).append(" HTTP/1.1\n"); req1.append("Host: tester\n"); req1.append("Connection: close\n"); req1.append("\n"); @@ -88,6 +92,7 @@ public class DispatchServletTest extends TestCase assertTrue(msg + " should return error code 403 (Forbidden)", response.startsWith("HTTP/1.1 403 ")); } + @Test public void testSelfRefDeep() throws Exception { ServletTester tester = new ServletTester(); @@ -106,11 +111,9 @@ public class DispatchServletTest extends TestCase */ int nestedDepth = 220; - for (int sri = 0; sri < selfRefs.length; sri++) + for (String selfRef : selfRefs) { - String selfRef = selfRefs[sri]; - - StringBuffer req1 = new StringBuffer(); + StringBuilder req1 = new StringBuilder(); req1.append("GET /tests"); for (int i = 0; i < nestedDepth; i++) { @@ -124,7 +127,7 @@ public class DispatchServletTest extends TestCase String response = tester.getResponses(req1.toString()); - StringBuffer msg = new StringBuffer(); + StringBuilder msg = new StringBuilder(); msg.append("Response code on nested \"").append(selfRef).append("\""); msg.append(" (depth:").append(nestedDepth).append(")"); @@ -132,7 +135,7 @@ public class DispatchServletTest extends TestCase "the nestedDepth in the TestCase is too large (reduce it)", response.startsWith("HTTP/1.1 413 ")); - assertFalse(msg + " should not be code 500.",response.startsWith("HTTP/1.1 500 ")); + assertFalse(msg + " should not be code 500.", response.startsWith("HTTP/1.1 500 ")); assertTrue(msg + " should return error code 403 (Forbidden)", response.startsWith("HTTP/1.1 403 ")); }