Enable tests on JDK 8

Signed-off-by: Jan Supol <jan.supol@oracle.com>
diff --git a/.gitignore b/.gitignore
index 9f7d5b9..27753e1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,7 @@
 # maven noise
 target/
 target-*/
+target11/
 
 # gradle noise
 .gradle
diff --git a/test-framework/providers/bundle/pom.xml b/test-framework/providers/bundle/pom.xml
index 8227a40..98f8c11 100644
--- a/test-framework/providers/bundle/pom.xml
+++ b/test-framework/providers/bundle/pom.xml
@@ -63,20 +63,10 @@
             <artifactId>jersey-test-framework-provider-netty</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.glassfish.jersey.test-framework.providers</groupId>
+            <artifactId>jersey-test-framework-provider-jetty</artifactId>
+            <version>${project.version}</version>
+        </dependency>
     </dependencies>
-    <profiles>
-        <profile>
-            <id>Jetty11</id>
-            <activation>
-                <jdk>[11,)</jdk>
-            </activation>
-            <dependencies>
-                <dependency>
-                    <groupId>org.glassfish.jersey.test-framework.providers</groupId>
-                    <artifactId>jersey-test-framework-provider-jetty</artifactId>
-                    <version>${project.version}</version>
-                </dependency>
-            </dependencies>
-        </profile>
-    </profiles>
 </project>
diff --git a/tests/e2e-client/pom.xml b/tests/e2e-client/pom.xml
index 3ba0b6a..3c9152d 100644
--- a/tests/e2e-client/pom.xml
+++ b/tests/e2e-client/pom.xml
@@ -128,6 +128,11 @@
             <scope>test</scope>
         </dependency>
         <dependency>
+            <groupId>org.glassfish.jersey.connectors</groupId>
+            <artifactId>jersey-jetty-connector</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>org.glassfish.jersey.security</groupId>
             <artifactId>oauth1-signature</artifactId>
             <version>${project.version}</version>
@@ -217,45 +222,6 @@
                 </pluginManagement>
             </build>
         </profile>
-        <profile>
-            <id>JettyExclude</id>
-            <activation>
-                <jdk>1.8</jdk>
-            </activation>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-compiler-plugin</artifactId>
-                        <configuration>
-                            <testExcludes>
-                                <testExclude>org/glassfish/jersey/tests/e2e/client/connector/HttpPatchTest.java</testExclude>
-                                <testExclude>org/glassfish/jersey/tests/e2e/client/connector/RequestHeaderModificationsTest.java</testExclude>
-                                <testExclude>org/glassfish/jersey/tests/e2e/client/connector/ssl/SslConnectorConfigurationTest.java</testExclude>
-                                <testExclude>org/glassfish/jersey/tests/e2e/client/connector/ssl/SslConnectorHostnameVerifierTest.java</testExclude>
-                                <testExclude>org/glassfish/jersey/tests/e2e/client/connector/ssl/SslHttpUrlConnectorTest.java</testExclude>
-                                <testExclude>org/glassfish/jersey/tests/e2e/client/ShutdownHookMemoryLeakTest.java</testExclude>
-                                <testExclude>org/glassfish/jersey/tests/e2e/client/connector/ssl/AbstractConnectorServerTest.java</testExclude>
-                            </testExcludes>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-        <profile>
-            <id>Jetty11</id>
-            <activation>
-                <jdk>[11,)</jdk>
-            </activation>
-            <dependencies>
-                <dependency>
-                    <groupId>org.glassfish.jersey.connectors</groupId>
-                    <artifactId>jersey-jetty-connector</artifactId>
-                    <version>${project.version}</version>
-                    <scope>test</scope>
-                </dependency>
-            </dependencies>
-        </profile>
     </profiles>
 
 </project>
diff --git a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/ShutdownHookMemoryLeakTest.java b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/ShutdownHookMemoryLeakTest.java
index e0e6372..5a0b830 100644
--- a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/ShutdownHookMemoryLeakTest.java
+++ b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/ShutdownHookMemoryLeakTest.java
@@ -39,6 +39,7 @@
 import org.glassfish.jersey.server.ResourceConfig;
 import org.glassfish.jersey.test.JerseyTest;
 
+import org.glassfish.jersey.tests.e2e.client.connector.ProviderFiltering;
 import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -72,12 +73,12 @@
 
     @Parameterized.Parameters
     public static List<ConnectorProvider[]> connectionProviders() {
-        return Arrays.asList(new ConnectorProvider[][] {
+        return Arrays.asList(ProviderFiltering.filterProviders(new ConnectorProvider[][] {
                 {new GrizzlyConnectorProvider()},
                 {new JettyConnectorProvider()},
                 {new ApacheConnectorProvider()},
                 {new HttpUrlConnectorProvider()}
-        });
+        }));
     }
 
     @Path(PATH)
diff --git a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/connector/HttpPatchTest.java b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/connector/HttpPatchTest.java
index 95a2c53..9c04cc5 100644
--- a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/connector/HttpPatchTest.java
+++ b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/connector/HttpPatchTest.java
@@ -58,7 +58,7 @@
 
     @Parameterized.Parameters(name = "{index}: {0}")
     public static List<Object[]> testData() {
-        return Arrays.asList(new Object[][]{
+        return Arrays.asList(ProviderFiltering.filterProviders(new Object[][]{
                 // {HttpUrlConnectorProvider.class}, // cannot process PATCH without additional configuration
                 {GrizzlyConnectorProvider.class},
                 {JettyConnectorProvider.class}, // unstable.
@@ -66,7 +66,7 @@
                 {GrizzlyConnectorProvider.class},
                 {NettyConnectorProvider.class},
                 {JdkConnectorProvider.class},
-                });
+                }));
     }
 
     private final ConnectorProvider connectorProvider;
diff --git a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/connector/ProviderFiltering.java b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/connector/ProviderFiltering.java
new file mode 100644
index 0000000..db9f21f
--- /dev/null
+++ b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/connector/ProviderFiltering.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2020 Oracle and/or its affiliates. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0, which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+
+
+package org.glassfish.jersey.tests.e2e.client.connector;
+
+import org.glassfish.jersey.internal.util.JdkVersion;
+import org.glassfish.jersey.jetty.connector.JettyConnectorProvider;
+
+import java.util.LinkedList;
+import java.util.List;
+
+public class ProviderFiltering {
+    public static <T> T[][] filterProviders(T[][] tofilter) {
+        final List<Object[]> filtered = new LinkedList<>();
+        final JdkVersion version = JdkVersion.getJdkVersion();
+        final boolean isJdk8 = version.getMajor() == 1;
+        for (Object[] provider : tofilter) {
+            if (!isJdk8
+                    || (provider[0] != JettyConnectorProvider.class && !JettyConnectorProvider.class.isInstance(provider[0]))) {
+                filtered.add(provider);
+            }
+        }
+        return filtered.toArray(
+                (T[][]) java.lang.reflect.Array.newInstance(tofilter.getClass().getComponentType(),
+                        filtered.size())
+        );
+    }
+}
diff --git a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/connector/RequestHeaderModificationsTest.java b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/connector/RequestHeaderModificationsTest.java
index 48c6314..ebacf52 100644
--- a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/connector/RequestHeaderModificationsTest.java
+++ b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/connector/RequestHeaderModificationsTest.java
@@ -98,7 +98,7 @@
 
     @Parameterized.Parameters(name = "{index}: {0} / modificationSupported= {1} / addHeader= {2}")
     public static List<Object[]> testData() {
-        return Arrays.asList(new Object[][] {
+        return Arrays.asList(ProviderFiltering.filterProviders(new Object[][] {
                 {HttpUrlConnectorProvider.class, true, false},
                 {GrizzlyConnectorProvider.class, false, false}, // change to true when JERSEY-2341 fixed
                 {JettyConnectorProvider.class, false, false}, // change to true when JERSEY-2341 fixed
@@ -107,7 +107,7 @@
                 {GrizzlyConnectorProvider.class, false, true}, // change to true when JERSEY-2341 fixed
                 {JettyConnectorProvider.class, false, true}, // change to true when JERSEY-2341 fixed
                 {ApacheConnectorProvider.class, false, true}, // change to true when JERSEY-2341 fixed
-        });
+        }));
     }
 
     private final ConnectorProvider connectorProvider;
diff --git a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/connector/ssl/AbstractConnectorServerTest.java b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/connector/ssl/AbstractConnectorServerTest.java
index e0315f4..8b22485 100644
--- a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/connector/ssl/AbstractConnectorServerTest.java
+++ b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/connector/ssl/AbstractConnectorServerTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2020 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -29,6 +29,7 @@
 import org.glassfish.jersey.grizzly.connector.GrizzlyConnectorProvider;
 import org.glassfish.jersey.jetty.connector.JettyConnectorProvider;
 
+import org.glassfish.jersey.tests.e2e.client.connector.ProviderFiltering;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.runner.RunWith;
@@ -56,12 +57,12 @@
      */
     @Parameterized.Parameters(name = "{index}: {0}")
     public static Iterable<Object[]> testData() {
-        return Arrays.asList(new Object[][] {
+        return Arrays.asList(ProviderFiltering.filterProviders(new Object[][] {
                 {new HttpUrlConnectorProvider()},
                 {new GrizzlyConnectorProvider()},
                 {new JettyConnectorProvider()},
                 {new ApacheConnectorProvider()}
-        });
+        }));
     }
 
     @Parameterized.Parameter(0)
diff --git a/tests/e2e-entity/pom.xml b/tests/e2e-entity/pom.xml
index e33c365..bf41db4 100644
--- a/tests/e2e-entity/pom.xml
+++ b/tests/e2e-entity/pom.xml
@@ -223,20 +223,6 @@
                 </pluginManagement>
             </build>
         </profile>
-        <profile>
-            <id>Jetty11</id>
-            <activation>
-                <jdk>[11,)</jdk>
-            </activation>
-            <dependencies>
-                <dependency>
-                    <groupId>org.glassfish.jersey.connectors</groupId>
-                    <artifactId>jersey-jetty-connector</artifactId>
-                    <version>${project.version}</version>
-                    <scope>test</scope>
-                </dependency>
-            </dependencies>
-        </profile>
     </profiles>
 
 </project>
diff --git a/tests/e2e/pom.xml b/tests/e2e/pom.xml
index 22758ec..80e534e 100644
--- a/tests/e2e/pom.xml
+++ b/tests/e2e/pom.xml
@@ -140,6 +140,12 @@
             <scope>test</scope>
         </dependency>
         <dependency>
+            <groupId>org.glassfish.jersey.connectors</groupId>
+            <artifactId>jersey-jetty-connector</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>org.glassfish.jersey.security</groupId>
             <artifactId>oauth1-signature</artifactId>
             <version>${project.version}</version>
@@ -211,17 +217,7 @@
                         <configuration>
                             <testExcludes>
                                 <testExclude>org/glassfish/jersey/tests/e2e/container/Jersey2462Test.java</testExclude>
-                                <testExclude>org/glassfish/jersey/tests/e2e/container/EscapedUriTest.java</testExclude>
-                                <testExclude>org/glassfish/jersey/tests/e2e/container/GzipContentEncodingTest.java</testExclude>
-                                <testExclude>org/glassfish/jersey/tests/e2e/container/HeadTest.java</testExclude>
                                 <testExclude>org/glassfish/jersey/tests/e2e/container/JettyEmptyHeaderParamTest.java</testExclude>
-                                <testExclude>org/glassfish/jersey/tests/e2e/container/LeadingSlashesTest.java</testExclude>
-                                <testExclude>org/glassfish/jersey/tests/e2e/container/MatrixParamTest.java</testExclude>
-                                <testExclude>org/glassfish/jersey/tests/e2e/container/QueryParamTest.java</testExclude>
-                                <testExclude>org/glassfish/jersey/tests/e2e/container/ResponseWriterMetadataTest.java</testExclude>
-                                <testExclude>org/glassfish/jersey/tests/e2e/container/ResponseWriterOutputStreamTest.java</testExclude>
-                                <testExclude>org/glassfish/jersey/tests/e2e/container/TrailingSlashTest.java</testExclude>
-                                <testExclude>org/glassfish/jersey/tests/e2e/container/JerseyContainerTest.java</testExclude>
                             </testExcludes>
                         </configuration>
                     </plugin>
@@ -229,20 +225,6 @@
             </build>
         </profile>
         <profile>
-            <id>Jetty11</id>
-            <activation>
-                <jdk>[11,)</jdk>
-            </activation>
-            <dependencies>
-                <dependency>
-                    <groupId>org.glassfish.jersey.connectors</groupId>
-                    <artifactId>jersey-jetty-connector</artifactId>
-                    <version>${project.version}</version>
-                    <scope>test</scope>
-                </dependency>
-            </dependencies>
-        </profile>
-        <profile>
             <id>sonar</id>
             <build>
                 <pluginManagement>
diff --git a/tests/e2e/src/test/java/org/glassfish/jersey/tests/e2e/container/HeadTest.java b/tests/e2e/src/test/java/org/glassfish/jersey/tests/e2e/container/HeadTest.java
index 40bdf7d..0e14b3d 100644
--- a/tests/e2e/src/test/java/org/glassfish/jersey/tests/e2e/container/HeadTest.java
+++ b/tests/e2e/src/test/java/org/glassfish/jersey/tests/e2e/container/HeadTest.java
@@ -18,7 +18,6 @@
 
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -50,11 +49,12 @@
 @RunWith(Parameterized.class)
 public class HeadTest extends JerseyContainerTest {
 
-    private static final List<TestContainerFactory> FACTORIES = Arrays.asList(
+    private static final List<TestContainerFactory> FACTORIES = listContainerFactories(
             new GrizzlyTestContainerFactory(),
             new InMemoryTestContainerFactory(),
             new SimpleTestContainerFactory(),
-            new JettyTestContainerFactory());
+            new JettyTestContainerFactory()
+    );
 
     @Parameterized.Parameters(name = "{0}")
     public static Collection<TestContainerFactory[]> parameters() throws Exception {
diff --git a/tests/e2e/src/test/java/org/glassfish/jersey/tests/e2e/container/JerseyContainerTest.java b/tests/e2e/src/test/java/org/glassfish/jersey/tests/e2e/container/JerseyContainerTest.java
index fe2b087..3c1bd96 100644
--- a/tests/e2e/src/test/java/org/glassfish/jersey/tests/e2e/container/JerseyContainerTest.java
+++ b/tests/e2e/src/test/java/org/glassfish/jersey/tests/e2e/container/JerseyContainerTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2020 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -16,11 +16,12 @@
 
 package org.glassfish.jersey.tests.e2e.container;
 
-import java.util.Arrays;
 import java.util.Collection;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.stream.Collectors;
 
+import org.glassfish.jersey.internal.util.JdkVersion;
 import org.glassfish.jersey.test.JerseyTest;
 import org.glassfish.jersey.test.grizzly.GrizzlyTestContainerFactory;
 import org.glassfish.jersey.test.inmemory.InMemoryTestContainerFactory;
@@ -39,7 +40,7 @@
 @RunWith(Parameterized.class)
 public abstract class JerseyContainerTest extends JerseyTest {
 
-    private static final List<TestContainerFactory> FACTORIES = Arrays.asList(
+    private static final List<TestContainerFactory> FACTORIES = listContainerFactories(
             new GrizzlyTestContainerFactory(),
             new InMemoryTestContainerFactory(),
             new SimpleTestContainerFactory(),
@@ -61,4 +62,16 @@
     protected TestContainerFactory getTestContainerFactory() throws TestContainerException {
         return factory;
     }
+
+    protected static List<TestContainerFactory> listContainerFactories(TestContainerFactory...factories) {
+        final JdkVersion version = JdkVersion.getJdkVersion();
+        boolean isJDK8 = version.getMajor() == 1;
+        final List<TestContainerFactory> filtered = new LinkedList<>();
+        for (TestContainerFactory factory : factories) {
+            if (!isJDK8 || !JettyTestContainerFactory.class.isInstance(factory)) {
+                filtered.add(factory);
+            }
+        }
+        return filtered;
+    }
 }