Merge remote-tracking branch '3.x' into 3.1 Signed-off-by: Maxim Nesen <maxim.nesen@oracle.com>
diff --git a/bom/pom.xml b/bom/pom.xml index fe7cac3..7e75992 100644 --- a/bom/pom.xml +++ b/bom/pom.xml
@@ -24,7 +24,7 @@ <parent> <groupId>org.eclipse.ee4j</groupId> <artifactId>project</artifactId> - <version>1.0.6</version> + <version>1.0.7</version> <relativePath/> </parent> @@ -63,11 +63,11 @@ <artifactId>jersey-apache-connector</artifactId> <version>${project.version}</version> </dependency> -<!-- <dependency--> -<!-- <groupId>org.glassfish.jersey.connectors</groupId--> -<!-- <artifactId>jersey-helidon-connector</artifactId--> -<!-- <version>${project.version}</version--> -<!-- </dependency--> + <dependency> + <groupId>org.glassfish.jersey.connectors</groupId> + <artifactId>jersey-helidon-connector</artifactId> + <version>${project.version}</version> + </dependency> <dependency> <groupId>org.glassfish.jersey.connectors</groupId> <artifactId>jersey-grizzly-connector</artifactId>
diff --git a/connectors/helidon-connector/pom.xml b/connectors/helidon-connector/pom.xml index 775535b..2da4ae3 100644 --- a/connectors/helidon-connector/pom.xml +++ b/connectors/helidon-connector/pom.xml
@@ -30,11 +30,19 @@ <packaging>jar</packaging> <name>jersey-connectors-helidon</name> + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <java8.build.outputDirectory>${project.basedir}/target</java8.build.outputDirectory> + <java8.sourceDirectory>${project.basedir}/src/main/java8</java8.sourceDirectory> + <java17.build.outputDirectory>${project.basedir}/target17</java17.build.outputDirectory> + <java17.sourceDirectory>${project.basedir}/src/main/java17</java17.sourceDirectory> + </properties> + <dependencies> <dependency> <groupId>io.helidon.jersey</groupId> <artifactId>helidon-jersey-connector</artifactId> - <version>2.2.1</version> + <version>3.0.0-M1</version> <scope>provided</scope> </dependency> <dependency> @@ -67,10 +75,6 @@ <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <inherited>false</inherited> - <configuration> - <source>11</source> - <target>11</target> - </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> @@ -81,4 +85,142 @@ </plugin> </plugins> </build> + + <profiles> + <profile> + <id>HelidonExclude</id> + <activation> + <jdk>[1.8,17)</jdk> + </activation> + <build> + <directory>${java8.build.outputDirectory}</directory> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <executions> + <execution> + <phase>generate-sources</phase> + <goals> + <goal>add-source</goal> + </goals> + <configuration> + <sources> + <source>${java8.sourceDirectory}</source> + </sources> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <testExcludes> + <testExclude>org/glassfish/jersey/helidon/connector/sse/*.java</testExclude> + <testExclude>org/glassfish/jersey/helidon/connector/*.java</testExclude> + </testExcludes> + </configuration> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>HelidonInclude</id> + <activation> + <jdk>[17,)</jdk> + </activation> + <build> + <directory>${java17.build.outputDirectory}</directory> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <executions> + <execution> + <phase>generate-sources</phase> + <goals> + <goal>add-source</goal> + </goals> + <configuration> + <sources> + <source>${java17.sourceDirectory}</source> + </sources> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>copyJDK17FilesToMultiReleaseJar</id> + <activation> + <file> + <!-- ${java17.build.outputDirectory} does not work here --> + <exists>target17/classes/org/glassfish/jersey/helidon/connector/HelidonConnectorProvider.class</exists> + </file> + <jdk>[1.8,17)</jdk> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <inherited>true</inherited> + <extensions>true</extensions> + <configuration> + <instructions> + <Multi-Release>true</Multi-Release> + </instructions> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-resources-plugin</artifactId> + <inherited>true</inherited> + <executions> + <execution> + <id>copy-jdk17-classes</id> + <phase>prepare-package</phase> + <goals> + <goal>copy-resources</goal> + </goals> + <configuration> + <outputDirectory>${java8.build.outputDirectory}/classes/META-INF/versions/17</outputDirectory> + <resources> + <resource> + <directory>${java17.build.outputDirectory}/classes</directory> + </resource> + </resources> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>copy-jdk17-sources</id> + <phase>package</phase> + <configuration> + <target> + <property name="sources-jar" value="${java8.build.outputDirectory}/${project.artifactId}-${project.version}-sources.jar"/> + <echo>sources-jar: ${sources-jar}</echo> + <zip destfile="${sources-jar}" update="true"> + <zipfileset dir="${java17.sourceDirectory}" prefix="META-INF/versions/17"/> + </zip> + </target> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> </project>
diff --git a/connectors/helidon-connector/src/main/java/org/glassfish/jersey/helidon/connector/HelidonClientProperties.java b/connectors/helidon-connector/src/main/java17/org/glassfish/jersey/helidon/connector/HelidonClientProperties.java similarity index 82% rename from connectors/helidon-connector/src/main/java/org/glassfish/jersey/helidon/connector/HelidonClientProperties.java rename to connectors/helidon-connector/src/main/java17/org/glassfish/jersey/helidon/connector/HelidonClientProperties.java index 7e7c10d..93baa42 100644 --- a/connectors/helidon-connector/src/main/java/org/glassfish/jersey/helidon/connector/HelidonClientProperties.java +++ b/connectors/helidon-connector/src/main/java17/org/glassfish/jersey/helidon/connector/HelidonClientProperties.java
@@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2020, 2022 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 @@ -15,13 +15,14 @@ */ package org.glassfish.jersey.helidon.connector; +import io.helidon.jersey.connector.HelidonProperties; import org.glassfish.jersey.internal.util.PropertiesClass; import io.helidon.config.Config; import io.helidon.webclient.WebClient; /** - * Configuration options specific to the Client API that utilizes {@link HelidonConnectorProvider} + * Configuration options specific to the Client API that utilizes {@code HelidonConnectorProvider}. * @since 2.31 */ @PropertiesClass @@ -30,5 +31,5 @@ /** * A Helidon {@link Config} instance that is passed to {@link WebClient.Builder#config(Config)} if available */ - public static final String CONFIG = io.helidon.jersey.connector.HelidonProperties.CONFIG; + public static final String CONFIG = HelidonProperties.CONFIG; }
diff --git a/connectors/helidon-connector/src/main/java/org/glassfish/jersey/helidon/connector/HelidonConnectorProvider.java b/connectors/helidon-connector/src/main/java17/org/glassfish/jersey/helidon/connector/HelidonConnectorProvider.java similarity index 95% rename from connectors/helidon-connector/src/main/java/org/glassfish/jersey/helidon/connector/HelidonConnectorProvider.java rename to connectors/helidon-connector/src/main/java17/org/glassfish/jersey/helidon/connector/HelidonConnectorProvider.java index 1da44f9..aa1540a 100644 --- a/connectors/helidon-connector/src/main/java/org/glassfish/jersey/helidon/connector/HelidonConnectorProvider.java +++ b/connectors/helidon-connector/src/main/java17/org/glassfish/jersey/helidon/connector/HelidonConnectorProvider.java
@@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2020, 2022 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 @@ -68,7 +68,7 @@ public class HelidonConnectorProvider extends io.helidon.jersey.connector.HelidonConnectorProvider { @Override public Connector getConnector(Client client, Configuration runtimeConfig) { - if (JdkVersion.getJdkVersion().getMajor() < 11) { + if (JdkVersion.getJdkVersion().getMajor() < 17) { throw new ProcessingException(LocalizationMessages.NOT_SUPPORTED()); } return super.getConnector(client, runtimeConfig);
diff --git a/connectors/helidon-connector/src/main/java/org/glassfish/jersey/helidon/connector/HelidonClientProperties.java b/connectors/helidon-connector/src/main/java8/org/glassfish/jersey/helidon/connector/HelidonClientProperties.java similarity index 70% copy from connectors/helidon-connector/src/main/java/org/glassfish/jersey/helidon/connector/HelidonClientProperties.java copy to connectors/helidon-connector/src/main/java8/org/glassfish/jersey/helidon/connector/HelidonClientProperties.java index 7e7c10d..d1e8ee1 100644 --- a/connectors/helidon-connector/src/main/java/org/glassfish/jersey/helidon/connector/HelidonClientProperties.java +++ b/connectors/helidon-connector/src/main/java8/org/glassfish/jersey/helidon/connector/HelidonClientProperties.java
@@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2020, 2022 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 @@ -17,18 +17,15 @@ import org.glassfish.jersey.internal.util.PropertiesClass; -import io.helidon.config.Config; -import io.helidon.webclient.WebClient; - /** - * Configuration options specific to the Client API that utilizes {@link HelidonConnectorProvider} + * Configuration options specific to the Client API that utilizes {@code HelidonConnectorProvider} * @since 2.31 */ @PropertiesClass public final class HelidonClientProperties { /** - * A Helidon {@link Config} instance that is passed to {@link WebClient.Builder#config(Config)} if available + * A Helidon {@code Config} instance that is passed to {@code WebClient.Builder#config(Config)} if available. */ - public static final String CONFIG = io.helidon.jersey.connector.HelidonProperties.CONFIG; + public static final String CONFIG = "jersey.connector.helidon.config"; }
diff --git a/connectors/helidon-connector/src/main/java8/org/glassfish/jersey/helidon/connector/HelidonConnectorProvider.java b/connectors/helidon-connector/src/main/java8/org/glassfish/jersey/helidon/connector/HelidonConnectorProvider.java new file mode 100644 index 0000000..932155a --- /dev/null +++ b/connectors/helidon-connector/src/main/java8/org/glassfish/jersey/helidon/connector/HelidonConnectorProvider.java
@@ -0,0 +1,42 @@ +/* + * Copyright (c) 2022 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.helidon.connector; + +import org.glassfish.jersey.client.spi.Connector; +import org.glassfish.jersey.client.spi.ConnectorProvider; +import org.glassfish.jersey.internal.util.JdkVersion; + +import jakarta.ws.rs.ProcessingException; +import jakarta.ws.rs.client.Client; +import jakarta.ws.rs.core.Configuration; +import java.io.OutputStream; + +/** + * Helidon Connector stub which only throws exception when running on JDK prior to 17. + * New Helidon 3 does not support JDKs prior to 17. + * + * @since 3.0.5 + */ +public class HelidonConnectorProvider implements ConnectorProvider { + @Override + public Connector getConnector(Client client, Configuration runtimeConfig) { + if (JdkVersion.getJdkVersion().getMajor() < 17) { + throw new ProcessingException(LocalizationMessages.NOT_SUPPORTED()); + } + return null; + } +}
diff --git a/connectors/helidon-connector/src/test/java/org/glassfish/jersey/helidon/connector/HelidonPropertiesTest.java b/connectors/helidon-connector/src/test/java/org/glassfish/jersey/helidon/connector/HelidonPropertiesTest.java new file mode 100644 index 0000000..a858e67 --- /dev/null +++ b/connectors/helidon-connector/src/test/java/org/glassfish/jersey/helidon/connector/HelidonPropertiesTest.java
@@ -0,0 +1,31 @@ +/* + * Copyright (c) 2022 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.helidon.connector; + +import io.helidon.jersey.connector.HelidonProperties; +import org.junit.Assert; +import org.junit.Test; + +public class HelidonPropertiesTest { + + @Test + public void testHelidonStrings() { + String jerseyValue = HelidonClientProperties.CONFIG; + String helidonConfig = HelidonProperties.CONFIG; + Assert.assertEquals(jerseyValue, helidonConfig); + } +}
diff --git a/connectors/pom.xml b/connectors/pom.xml index 92f3d58..d472f4b 100644 --- a/connectors/pom.xml +++ b/connectors/pom.xml
@@ -36,6 +36,7 @@ <modules> <module>apache-connector</module> <module>grizzly-connector</module> + <module>helidon-connector</module> <module>jdk-connector</module> <module>jetty-connector</module> <module>netty-connector</module>
diff --git a/ext/microprofile/mp-config/pom.xml b/ext/microprofile/mp-config/pom.xml index 12c3b1a..97451e7 100644 --- a/ext/microprofile/mp-config/pom.xml +++ b/ext/microprofile/mp-config/pom.xml
@@ -67,21 +67,6 @@ <artifactId>junit</artifactId> <scope>test</scope> </dependency> - - <dependency> - <groupId>io.helidon.microprofile.config</groupId> - <artifactId>helidon-microprofile-config</artifactId> - <version>${helidon.version}</version> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>org.glassfish.jersey.test-framework.providers</groupId> - <artifactId>jersey-test-framework-provider-jetty</artifactId> - <version>${project.version}</version> - <scope>test</scope> - </dependency> - </dependencies> <build> <plugins> @@ -106,4 +91,68 @@ </plugins> </build> + <profiles> + <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/microprofile/config/ExternalPropertiesConfigurationFactoryTest.java</testExclude> + </testExcludes> + </configuration> + </plugin> + </plugins> + </build> + </profile> + <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> + <scope>test</scope> + </dependency> + </dependencies> + </profile> + <profile> + <id>smallrye-dependency</id> + <activation> + <jdk>[1.8,17)</jdk> + </activation> + <dependencies> + <dependency> + <groupId>io.smallrye.config</groupId> + <artifactId>smallrye-config</artifactId> + <version>${smallrye.config.version}</version> + <scope>test</scope> + </dependency> + </dependencies> + </profile> + <profile> + <id>helidon-config-dependency</id> + <activation> + <jdk>[17,)</jdk> + </activation> + <dependencies> + <dependency> + <groupId>io.helidon.microprofile.config</groupId> + <artifactId>helidon-microprofile-config</artifactId> + <version>${helidon.config.version}</version> + <scope>test</scope> + </dependency> + </dependencies> + </profile> + </profiles> + </project>
diff --git a/ext/microprofile/mp-rest-client/pom.xml b/ext/microprofile/mp-rest-client/pom.xml index c3551ec..cc11d33 100644 --- a/ext/microprofile/mp-rest-client/pom.xml +++ b/ext/microprofile/mp-rest-client/pom.xml
@@ -32,18 +32,12 @@ <dependency> <groupId>org.eclipse.microprofile.rest.client</groupId> <artifactId>microprofile-rest-client-api</artifactId> - <version>3.0</version> - <exclusions> - <exclusion> - <groupId>org.testng</groupId> - <artifactId>testng</artifactId> - </exclusion> - </exclusions> + <version>${microprofile.rest.client.version}</version> </dependency> <dependency> <groupId>org.eclipse.microprofile.config</groupId> <artifactId>microprofile-config-api</artifactId> - <version>1.3</version> + <version>${microprofile.config.version}</version> </dependency> <dependency> <groupId>org.glassfish.jersey.core</groupId>
diff --git a/pom.xml b/pom.xml index c723798..8a91c46 100644 --- a/pom.xml +++ b/pom.xml
@@ -2104,7 +2104,6 @@ <bouncycastle.version>1.68</bouncycastle.version> <commons-lang3.version>3.3.2</commons-lang3.version> - <microprofile.config.version>2.0</microprofile.config.version> <checkstyle.mvn.plugin.version>3.1.0</checkstyle.mvn.plugin.version> <checkstyle.version>8.28</checkstyle.version> <easymock.version>3.3</easymock.version> @@ -2116,9 +2115,15 @@ <gae.version>1.9.59</gae.version> <grizzly.client.version>1.16</grizzly.client.version> + <!-- microprofile --> + <microprofile.config.version>3.0</microprofile.config.version> + <microprofile.rest.client.version>3.0</microprofile.rest.client.version> + <helidon.config.version>3.0.0-M1</helidon.config.version> + <smallrye.config.version>3.0.0-RC1</smallrye.config.version> + + <guava.version>18.0</guava.version> <hamcrest.version>1.3</hamcrest.version> - <helidon.version>1.0.3</helidon.version> <xmlunit.version>1.6</xmlunit.version> <httpclient.version>4.5.13</httpclient.version> <jackson.version>2.13.0</jackson.version>
diff --git a/tests/integration/microprofile/config/helidon/pom.xml b/tests/integration/microprofile/config/helidon/pom.xml index 1b516c3..4252efc 100644 --- a/tests/integration/microprofile/config/helidon/pom.xml +++ b/tests/integration/microprofile/config/helidon/pom.xml
@@ -42,18 +42,6 @@ <scope>test</scope> </dependency> <dependency> - <groupId>io.helidon.config</groupId> - <artifactId>helidon-config</artifactId> - <version>${helidon.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>io.helidon.microprofile.config</groupId> - <artifactId>helidon-microprofile-config</artifactId> - <version>${helidon.version}</version> - <scope>test</scope> - </dependency> - <dependency> <groupId>org.glassfish.jersey.test-framework</groupId> <artifactId>jersey-test-framework-core</artifactId> <scope>test</scope> @@ -89,4 +77,35 @@ </plugins> </build> + <profiles> + <profile> + <id>smallrye-dependency</id> + <activation> + <jdk>[1.8,17)</jdk> + </activation> + <dependencies> + <dependency> + <groupId>io.smallrye.config</groupId> + <artifactId>smallrye-config</artifactId> + <version>${smallrye.config.version}</version> + <scope>test</scope> + </dependency> + </dependencies> + </profile> + <profile> + <id>helidon-config-dependency</id> + <activation> + <jdk>[17,)</jdk> + </activation> + <dependencies> + <dependency> + <groupId>io.helidon.microprofile.config</groupId> + <artifactId>helidon-microprofile-config</artifactId> + <version>${helidon.config.version}</version> + <scope>test</scope> + </dependency> + </dependencies> + </profile> + </profiles> + </project>
diff --git a/tests/integration/microprofile/rest-client-tck/pom.xml b/tests/integration/microprofile/rest-client-tck/pom.xml index c05cb99..14e2334 100644 --- a/tests/integration/microprofile/rest-client-tck/pom.xml +++ b/tests/integration/microprofile/rest-client-tck/pom.xml
@@ -56,9 +56,9 @@ <version>4.0.1</version> </dependency> <dependency> - <groupId>io.smallrye</groupId> + <groupId>io.smallrye.config</groupId> <artifactId>smallrye-config</artifactId> - <version>1.3.6</version> + <version>${smallrye.config.version}</version> <scope>test</scope> <exclusions> <exclusion> @@ -70,7 +70,7 @@ <dependency> <groupId>org.eclipse.microprofile.rest.client</groupId> <artifactId>microprofile-rest-client-tck</artifactId> - <version>3.0</version> + <version>${microprofile.rest.client.version}</version> <scope>test</scope> </dependency> <dependency>
diff --git a/tests/integration/microprofile/rest-client/pom.xml b/tests/integration/microprofile/rest-client/pom.xml index 7c0c317..bce2a0d 100644 --- a/tests/integration/microprofile/rest-client/pom.xml +++ b/tests/integration/microprofile/rest-client/pom.xml
@@ -47,9 +47,9 @@ <scope>test</scope> </dependency> <dependency> - <groupId>io.smallrye</groupId> + <groupId>io.smallrye.config</groupId> <artifactId>smallrye-config</artifactId> - <version>1.3.6</version> + <version>${smallrye.config.version}</version> <scope>test</scope> <exclusions> <exclusion>