This is an automated email from the ASF dual-hosted git repository. ilgrosso pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/syncope.git
commit b1613d756a6bf2368525e9460d719cedb2f07914 Author: Francesco Chicchiriccò <[email protected]> AuthorDate: Mon Dec 21 12:05:06 2020 +0100 Re-enabling JDK 16 compatibility and build with dedicated temporary profile --- .travis.yml | 14 ++--- .../common/lib/types/SRARouteFilterFactory.java | 1 - .../jpa/content/XMLContentExporter.java | 21 +++---- pom.xml | 66 +++++++++++++++++----- sra/pom.xml | 4 -- .../java/org/apache/syncope/sra/RouteProvider.java | 14 ----- .../org/apache/syncope/sra/RouteProviderTest.java | 41 ++------------ wa/starter/pom.xml | 22 ++++++++ 8 files changed, 94 insertions(+), 89 deletions(-) diff --git a/.travis.yml b/.travis.yml index e3c1076..b2359a8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -63,13 +63,13 @@ jobs: - export JAVA_HOME=~/openjdk14 - export PATH="$JAVA_HOME/bin:$PATH" - eval $TestCommand - #- stage: test - #name: "Unit Tests via JDK 16" - #script: - #- ~/install-jdk.sh --target "/home/travis/openjdk16" --workspace "/home/travis/.cache/install-jdk" --feature "16" --license "GPLv2+CE" --cacerts - #- export JAVA_HOME=~/openjdk16 - #- export PATH="$JAVA_HOME/bin:$PATH" - #- eval $TestCommand + - stage: test + name: "Unit Tests via JDK 16" + script: + - ~/install-jdk.sh --target "/home/travis/openjdk16" --workspace "/home/travis/.cache/install-jdk" --feature "16" --license "GPLv2+CE" --cacerts + - export JAVA_HOME=~/openjdk16 + - export PATH="$JAVA_HOME/bin:$PATH" + - eval $TestCommand - stage: test name: "Persistence Unit Tests via JDK 11: PostgreSQL (JSONB)" script: mvn -f core/persistence-jpa-json/pom.xml -P postgres -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Dianal.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Dsass.skip=true diff --git a/common/am/lib/src/main/java/org/apache/syncope/common/lib/types/SRARouteFilterFactory.java b/common/am/lib/src/main/java/org/apache/syncope/common/lib/types/SRARouteFilterFactory.java index da3614e..70b4469 100644 --- a/common/am/lib/src/main/java/org/apache/syncope/common/lib/types/SRARouteFilterFactory.java +++ b/common/am/lib/src/main/java/org/apache/syncope/common/lib/types/SRARouteFilterFactory.java @@ -23,7 +23,6 @@ public enum SRARouteFilterFactory { ADD_REQUEST_PARAMETER, ADD_RESPONSE_HEADER, DEDUPE_RESPONSE_HEADER, - HYSTRIX, FALLBACK_HEADERS, MAP_REQUEST_HEADER, PREFIX_PATH, diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/XMLContentExporter.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/XMLContentExporter.java index ac8dbf5..538821f 100644 --- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/XMLContentExporter.java +++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/XMLContentExporter.java @@ -64,11 +64,10 @@ import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.sax.SAXTransformerFactory; import javax.xml.transform.sax.TransformerHandler; import javax.xml.transform.stream.StreamResult; -import org.apache.commons.collections4.BidiMap; -import org.apache.commons.collections4.bidimap.DualHashBidiMap; -import org.apache.commons.collections4.SetUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; +import org.apache.openjpa.lib.util.collections.BidiMap; +import org.apache.openjpa.lib.util.collections.DualHashBidiMap; import org.apache.syncope.core.persistence.api.DomainHolder; import org.apache.syncope.core.provisioning.api.utils.FormatUtils; import org.apache.syncope.core.persistence.api.content.ContentExporter; @@ -109,13 +108,13 @@ public class XMLContentExporter implements ContentExporter { private static final Logger LOG = LoggerFactory.getLogger(XMLContentExporter.class); - private static final Set<String> TABLE_PREFIXES_TO_BE_EXCLUDED = SetUtils.hashSet( + private static final Set<String> TABLE_PREFIXES_TO_BE_EXCLUDED = Stream.of( "QRTZ_", "LOGGING", "NotificationTask_recipients", LoggerDAO.AUDIT_TABLE, JPAReportExec.TABLE, JPATaskExec.TABLE, JPAUser.TABLE, JPAUPlainAttr.TABLE, JPAUPlainAttrValue.TABLE, JPAUPlainAttrUniqueValue.TABLE, JPAURelationship.TABLE, JPAUMembership.TABLE, JPAAnyObject.TABLE, JPAAPlainAttr.TABLE, JPAAPlainAttrValue.TABLE, JPAAPlainAttrUniqueValue.TABLE, JPAARelationship.TABLE, JPAAMembership.TABLE, JPAAccessToken.TABLE - ); + ).collect(Collectors.toCollection(HashSet::new)); private static final Map<String, String> TABLES_TO_BE_FILTERED = Map.of("TASK", "DTYPE <> 'PropagationTask' AND DTYPE <> 'NotificationTask'"); @@ -215,14 +214,14 @@ public class XMLContentExporter implements ContentExporter { case Types.BINARY: case Types.VARBINARY: case Types.LONGVARBINARY: - final InputStream is = rs.getBinaryStream(columnName); + InputStream is = rs.getBinaryStream(columnName); if (is != null) { res = DatatypeConverter.printHexBinary(IOUtils.toByteArray(is)); } break; case Types.BLOB: - final Blob blob = rs.getBlob(columnName); + Blob blob = rs.getBlob(columnName); if (blob != null) { res = DatatypeConverter.printHexBinary(IOUtils.toByteArray(blob.getBinaryStream())); } @@ -230,17 +229,13 @@ public class XMLContentExporter implements ContentExporter { case Types.BIT: case Types.BOOLEAN: - if (rs.getBoolean(columnName)) { - res = "1"; - } else { - res = "0"; - } + res = rs.getBoolean(columnName) ? "1" : "0"; break; case Types.DATE: case Types.TIME: case Types.TIMESTAMP: - final Timestamp timestamp = rs.getTimestamp(columnName); + Timestamp timestamp = rs.getTimestamp(columnName); if (timestamp != null) { res = FormatUtils.format(new Date(timestamp.getTime())); } diff --git a/pom.xml b/pom.xml index a7b07f9..412c45c 100644 --- a/pom.xml +++ b/pom.xml @@ -414,7 +414,7 @@ under the License. <spring-boot.version>2.3.7.RELEASE</spring-boot.version> <spring-cloud-gateway.version>2.2.6.RELEASE</spring-cloud-gateway.version> - <openjpa.version>3.1.2</openjpa.version> + <openjpa.version>3.1.3-SNAPSHOT</openjpa.version> <hikaricp.version>3.4.5</hikaricp.version> <bval.version>2.0.5</bval.version> @@ -972,11 +972,6 @@ under the License. <artifactId>spring-cloud-starter-gateway</artifactId> <version>${spring-cloud-gateway.version}</version> </dependency> - <dependency> - <groupId>org.springframework.cloud</groupId> - <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> - <version>${spring-cloud-gateway.version}</version> - </dependency> <dependency> <groupId>org.springframework</groupId> @@ -2965,20 +2960,61 @@ under the License. </activation> <properties> + <spring.version>5.3.2</spring.version> + <spring-boot.version>2.4.1</spring-boot.version> + <spring-cloud-gateway.version>3.0.0-RC1</spring-cloud-gateway.version> + <argLine>-Xms512m -Xmx1024m -Xss256k -Dnet.bytebuddy.experimental=true</argLine> </properties> <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - <configuration> - <argLine>--add-opens=java.base/java.lang=ALL-UNNAMED</argLine> - </configuration> - </plugin> - </plugins> + <pluginManagement> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <release>16</release> + <fork>true</fork> + <compilerArgs> + <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg> + <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg> + <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg> + <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg> + <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg> + <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED</arg> + <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg> + <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg> + <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg> + <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED</arg> + </compilerArgs> + <annotationProcessorPaths> + <path> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + <version>1.18.16</version> + </path> + </annotationProcessorPaths> + </configuration> + </plugin> + </plugins> + </pluginManagement> </build> + + <repositories> + <repository> + <id>repository.spring.milestone</id> + <name>Spring Milestone Repository</name> + <url>https://repo.spring.io/milestone</url> + </repository> + </repositories> + <pluginRepositories> + <pluginRepository> + <id>repository.spring.milestone</id> + <name>Spring Milestone Repository</name> + <url>https://repo.spring.io/milestone</url> + </pluginRepository> + </pluginRepositories> </profile> </profiles> diff --git a/sra/pom.xml b/sra/pom.xml index 183b170..9c78820 100644 --- a/sra/pom.xml +++ b/sra/pom.xml @@ -42,10 +42,6 @@ under the License. <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> - <dependency> - <groupId>org.springframework.cloud</groupId> - <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> - </dependency> <dependency> <groupId>org.springframework.boot</groupId> diff --git a/sra/src/main/java/org/apache/syncope/sra/RouteProvider.java b/sra/src/main/java/org/apache/syncope/sra/RouteProvider.java index 7a9eec9..4fe80f5 100644 --- a/sra/src/main/java/org/apache/syncope/sra/RouteProvider.java +++ b/sra/src/main/java/org/apache/syncope/sra/RouteProvider.java @@ -52,7 +52,6 @@ import org.springframework.cloud.gateway.filter.factory.AddRequestHeaderGatewayF import org.springframework.cloud.gateway.filter.factory.AddRequestParameterGatewayFilterFactory; import org.springframework.cloud.gateway.filter.factory.AddResponseHeaderGatewayFilterFactory; import org.springframework.cloud.gateway.filter.factory.FallbackHeadersGatewayFilterFactory; -import org.springframework.cloud.gateway.filter.factory.HystrixGatewayFilterFactory; import org.springframework.cloud.gateway.filter.factory.PrefixPathGatewayFilterFactory; import org.springframework.cloud.gateway.filter.factory.PreserveHostHeaderGatewayFilterFactory; import org.springframework.cloud.gateway.filter.factory.RedirectToGatewayFilterFactory; @@ -163,19 +162,6 @@ public class RouteProvider { }); break; - case HYSTRIX: - String[] hystrixArgs = gwfilter.getArgs().split(","); - filter = ctx.getBean(HystrixGatewayFilterFactory.class). - apply(route.getKey(), c -> { - if (StringUtils.isNotBlank(hystrixArgs[0])) { - c.setName(hystrixArgs[0].trim()); - } - if (StringUtils.isNotBlank(hystrixArgs[1])) { - c.setFallbackUri(hystrixArgs[1].trim()); - } - }); - break; - case FALLBACK_HEADERS: String[] fallbackHeadersArgs = gwfilter.getArgs().split(","); filter = ctx.getBean(FallbackHeadersGatewayFilterFactory.class). diff --git a/sra/src/test/java/org/apache/syncope/sra/RouteProviderTest.java b/sra/src/test/java/org/apache/syncope/sra/RouteProviderTest.java index 2cdc822..42f24bd 100644 --- a/sra/src/test/java/org/apache/syncope/sra/RouteProviderTest.java +++ b/sra/src/test/java/org/apache/syncope/sra/RouteProviderTest.java @@ -26,7 +26,6 @@ import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.stubFor; import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo; import static com.github.tomakehurst.wiremock.client.WireMock.verify; -import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; import static org.mockito.ArgumentMatchers.anyString; @@ -96,7 +95,8 @@ public class RouteProviderTest extends AbstractTest { route.getPredicates().add(new SRARoutePredicate.Builder(). factory(SRARoutePredicateFactory.METHOD).args("GET").build()); route.getPredicates().add(new SRARoutePredicate.Builder(). - factory(SRARoutePredicateFactory.PATH).args("/addResponseHeader").cond(SRARoutePredicateCond.AND).build()); + factory(SRARoutePredicateFactory.PATH).args("/addResponseHeader").cond(SRARoutePredicateCond.AND). + build()); route.getFilters().add(new SRARouteFilter.Builder(). factory(SRARouteFilterFactory.ADD_RESPONSE_HEADER).args("Hello,World").build()); @@ -179,37 +179,6 @@ public class RouteProviderTest extends AbstractTest { } @Test - public void hystrix() { - webClient.get().uri("/fallback").exchange(). - expectStatus().isOk(). - expectBody(). - consumeWith(response -> assertThat(response.getResponseBody()).isEqualTo("fallback".getBytes())); - - stubFor(get(urlEqualTo("/delay/3")). - willReturn(aResponse(). - withBody("no fallback"). - withFixedDelay(3000))); - - SRARouteTO route = new SRARouteTO(); - route.setKey("hystrix"); - route.setTarget(URI.create("http://localhost:" + wiremockPort)); - route.getPredicates().add(new SRARoutePredicate.Builder(). - factory(SRARoutePredicateFactory.HOST).args("*.hystrix.com").build()); - route.getFilters().add(new SRARouteFilter.Builder(). - factory(SRARouteFilterFactory.HYSTRIX).args("fallbackcmd,forward:/fallback").build()); - - SyncopeCoreTestingServer.ROUTES.put(route.getKey(), route); - routeRefresher.refresh(); - - webClient.get().uri("/delay/3"). - header(HttpHeaders.HOST, "www.hystrix.com"). - exchange(). - expectStatus().isOk(). - expectBody(). - consumeWith(response -> assertThat(response.getResponseBody()).isEqualTo("fallback".getBytes())); - } - - @Test public void requestHeaderToRequestUri() { webClient.get().uri("/requestHeaderToRequestUri").exchange().expectStatus().isNotFound(); @@ -391,7 +360,8 @@ public class RouteProviderTest extends AbstractTest { webClient.get().uri("/redirect").exchange().expectStatus().isOk(); route.getFilters().clear(); - route.getFilters().add(new SRARouteFilter.Builder().factory(SRARouteFilterFactory.SET_STATUS).args("404").build()); + route.getFilters().add(new SRARouteFilter.Builder().factory(SRARouteFilterFactory.SET_STATUS).args("404"). + build()); SyncopeCoreTestingServer.ROUTES.put(route.getKey(), route); routeRefresher.refresh(); @@ -443,7 +413,8 @@ public class RouteProviderTest extends AbstractTest { route.getPredicates().clear(); route.getPredicates().add(new SRARoutePredicate.Builder(). - factory(SRARoutePredicateFactory.BEFORE).negate().args(ZonedDateTime.now().minusYears(1).toString()).build()); + factory(SRARoutePredicateFactory.BEFORE).negate().args(ZonedDateTime.now().minusYears(1).toString()). + build()); SyncopeCoreTestingServer.ROUTES.put(route.getKey(), route); routeRefresher.refresh(); diff --git a/wa/starter/pom.xml b/wa/starter/pom.xml index 230847d..5098891 100644 --- a/wa/starter/pom.xml +++ b/wa/starter/pom.xml @@ -418,5 +418,27 @@ under the License. </resources> </build> </profile> + + <profile> + <id>jdk16-plus</id> + + <activation> + <jdk>[16,)</jdk> + </activation> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <includes> + <include>**/SyncopeWASAML2*.java</include> + </includes> + </configuration> + </plugin> + </plugins> + </build> + </profile> </profiles> </project>
