merge of the actual 3.0 into 3.1
diff --git a/bundles/jaxrs-ri/pom.xml b/bundles/jaxrs-ri/pom.xml index f676560..064baf9 100644 --- a/bundles/jaxrs-ri/pom.xml +++ b/bundles/jaxrs-ri/pom.xml
@@ -394,6 +394,9 @@ <jar destfile="${project.build.directory}/${project.artifactId}-sources.jar" update="true"> <zipfileset dir="../.." includes="NOTICE.md" prefix="META-INF" /> </jar> + <jar destfile="${project.build.directory}/${project.artifactId}.jar" update="true"> + <zipfileset dir="../.." includes="LICENSE.md" prefix="META-INF" /> + </jar> </target> </configuration> <goals>
diff --git a/connectors/netty-connector/src/main/java/org/glassfish/jersey/netty/connector/NettyConnector.java b/connectors/netty-connector/src/main/java/org/glassfish/jersey/netty/connector/NettyConnector.java index ede8c36..ab71e1f 100644 --- a/connectors/netty-connector/src/main/java/org/glassfish/jersey/netty/connector/NettyConnector.java +++ b/connectors/netty-connector/src/main/java/org/glassfish/jersey/netty/connector/NettyConnector.java
@@ -315,7 +315,12 @@ } // Make the connection attempt. - chan = b.connect(host, port).sync().channel(); + try { + chan = b.connect(host, port).sync().channel(); + } catch (Exception e) { + responseAvailable.completeExceptionally(e); + return; + } } // assert: clientHandler will always notify responseDone: either normally, or exceptionally
diff --git a/connectors/netty-connector/src/test/java/org/glassfish/jersey/netty/connector/ConnectionExceptionTest.java b/connectors/netty-connector/src/test/java/org/glassfish/jersey/netty/connector/ConnectionExceptionTest.java new file mode 100644 index 0000000..d35394e --- /dev/null +++ b/connectors/netty-connector/src/test/java/org/glassfish/jersey/netty/connector/ConnectionExceptionTest.java
@@ -0,0 +1,42 @@ +/* + * Copyright (c) 2023 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.netty.connector; + +import org.glassfish.jersey.client.ClientConfig; +import org.glassfish.jersey.client.ClientProperties; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import jakarta.ws.rs.ProcessingException; +import jakarta.ws.rs.client.ClientBuilder; +import jakarta.ws.rs.core.Response; + +public class ConnectionExceptionTest { + @Test + public void testConnectionException() throws InterruptedException { + Assertions.assertThrows(ProcessingException.class, ()-> { + ClientConfig clientConfig = new ClientConfig(); + clientConfig.connectorProvider(new NettyConnectorProvider()); + + Response r = ClientBuilder.newClient(clientConfig) + .property(ClientProperties.CONNECT_TIMEOUT, 1000) + .property(ClientProperties.READ_TIMEOUT, 1000) + .target("http://test.nonono:8080").request().get(); + r.close(); + }); + } +}
diff --git a/tests/release-test/pom.xml b/tests/release-test/pom.xml index 246040a..a28dc22 100644 --- a/tests/release-test/pom.xml +++ b/tests/release-test/pom.xml
@@ -73,7 +73,7 @@ <dependency> <groupId>org.glassfish.jersey</groupId> <artifactId>jersey-bom</artifactId> - <version>${jersey.version}</version> + <version>${project.version}</version> <scope>import</scope> <type>pom</type> </dependency>
diff --git a/tests/release-test/src/test/java/org/glassfish/jersey/test/artifacts/LegalDocsIncludedTest.java b/tests/release-test/src/test/java/org/glassfish/jersey/test/artifacts/LegalDocsIncludedTest.java new file mode 100644 index 0000000..74e0281 --- /dev/null +++ b/tests/release-test/src/test/java/org/glassfish/jersey/test/artifacts/LegalDocsIncludedTest.java
@@ -0,0 +1,63 @@ +/* + * Copyright (c) 2023 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.test.artifacts; + +import org.apache.maven.plugin.testing.AbstractMojoTestCase; +import org.codehaus.plexus.util.xml.pull.XmlPullParserException; +import org.junit.Assert; +import org.junit.Test; + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.Properties; +import java.util.jar.JarFile; +import java.util.stream.Collectors; + +public class LegalDocsIncludedTest extends AbstractMojoTestCase { + private static final File localRepository = MavenUtil.getLocalMavenRepository(); + private static final Properties properties = MavenUtil.getMavenProperties(); + + private static final String LICENSE_FILE = "LICENSE.md"; + private static final String NOTICE_FILE = "NOTICE.md"; + + @Test + public void testLegalFiles() throws IOException, XmlPullParserException { + TestResult testResult = new TestResult(); + List<File> jars = MavenUtil.streamJerseyJars() + .map(dependency -> MavenUtil.getArtifactJar(localRepository, dependency, properties)) + .collect(Collectors.toList()); + + for (File jar : jars) { + for (String filename : new String[]{LICENSE_FILE, NOTICE_FILE}) { + JarFile jarFile = new JarFile(jar); + String value; + try { + value = jarFile.getEntry("META-INF/" + filename).getName(); + } catch (NullPointerException npe) { + value = null; + } + TestResult.MessageBuilder builder = value != null ? testResult.ok() : testResult.exception(); + builder.append(jar.getName()).append(value == null ? " DOES NOT CONTAIN " : " CONTAINS ") + .append(filename).println(" file"); + } + } + + //Assertions.assertTrue(testResult.result(), "Some error occurred, see previous messages"); + Assert.assertTrue("Some error occurred, see previous messages", testResult.result()); + } +}