From 4e766702bcce92f6b930454da39ea8ecd8d8a96e Mon Sep 17 00:00:00 2001 From: rfscholte Date: Mon, 23 Aug 2021 20:39:24 +0200 Subject: [PATCH 001/114] [maven-release-plugin] prepare for next development iteration --- plexus-java/pom.xml | 2 +- pom.xml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index be934a3..53be752 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus-languages - 1.1.0 + 1.1.1-SNAPSHOT plexus-java diff --git a/pom.xml b/pom.xml index 042f5d6..2bc77e6 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ plexus-languages - 1.1.0 + 1.1.1-SNAPSHOT pom Plexus Languages @@ -25,7 +25,7 @@ scm:git:git@github.com:codehaus-plexus/plexus-languages.git scm:git:git@github.com:codehaus-plexus/plexus-languages.git https://github.com/codehaus-plexus/plexus-languages/tree/plexus-languages - plexus-languages-1.1.0 + HEAD github @@ -42,7 +42,7 @@ scm:git:git@github.com:codehaus-plexus/plexus-languages.git UTF-8 8 - 2021-08-23T18:38:35Z + 2021-08-23T18:39:23Z From 30a7ea7b51a123b2e0820d5e4b96b819766f441c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Aug 2021 23:01:28 +0000 Subject: [PATCH 002/114] Bump actions/setup-java from 2.2.0 to 2.3.0 Bumps [actions/setup-java](https://github.com/actions/setup-java) from 2.2.0 to 2.3.0. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v2.2.0...v2.3.0) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/maven.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 7efdcbe..6ebaea5 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -45,7 +45,7 @@ jobs: maven-${{ matrix.os }}- - name: Set up JDK - uses: actions/setup-java@v2.2.0 + uses: actions/setup-java@v2.3.0 with: distribution: ${{ matrix.jdk }} java-version: ${{ matrix.java }} From b0289ec4bf83c43152cece4a7ebdb1837f8352e5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Aug 2021 23:01:55 +0000 Subject: [PATCH 003/114] Bump mockito-core from 3.12.1 to 3.12.4 Bumps [mockito-core](https://github.com/mockito/mockito) from 3.12.1 to 3.12.4. - [Release notes](https://github.com/mockito/mockito/releases) - [Commits](https://github.com/mockito/mockito/compare/v3.12.1...v3.12.4) --- updated-dependencies: - dependency-name: org.mockito:mockito-core dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 53be752..a6b9357 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -102,7 +102,7 @@ org.mockito mockito-core - 3.12.1 + 3.12.4 test From d3eeb3989ad4a6dcb5889f9c471fc6ee72902d38 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 30 Sep 2021 09:45:55 +1000 Subject: [PATCH 004/114] Bump actions/setup-java from 2.3.0 to 2.3.1 (#97) Bumps [actions/setup-java](https://github.com/actions/setup-java) from 2.3.0 to 2.3.1. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v2.3.0...v2.3.1) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/maven.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 6ebaea5..369b081 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -45,7 +45,7 @@ jobs: maven-${{ matrix.os }}- - name: Set up JDK - uses: actions/setup-java@v2.3.0 + uses: actions/setup-java@v2.3.1 with: distribution: ${{ matrix.jdk }} java-version: ${{ matrix.java }} From 5a886fa8ccfd6eff153f6dbee407fdfdb4c47f50 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Sep 2021 23:02:02 +0000 Subject: [PATCH 005/114] Bump maven-javadoc-plugin from 3.3.0 to 3.3.1 Bumps [maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.3.0 to 3.3.1. - [Release notes](https://github.com/apache/maven-javadoc-plugin/releases) - [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.3.0...maven-javadoc-plugin-3.3.1) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-javadoc-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 2bc77e6..f551ae9 100644 --- a/pom.xml +++ b/pom.xml @@ -79,7 +79,7 @@ Caused by: org.apache.maven.plugin.MojoExecutionException: MavenReportException: Error while generating Javadoc: Exit code: 2 - javadoc: error - No source files for package org.codehaus.plexus.languages.java.jpms --> - 3.3.0 + 3.3.1 From e75129bb64e40e858d375d48f3a4220a888e0ebc Mon Sep 17 00:00:00 2001 From: Sylwester Lachiewicz Date: Sat, 2 Oct 2021 19:58:46 +0200 Subject: [PATCH 006/114] Update maven.yml --- .github/workflows/maven.yml | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 369b081..8e43192 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -25,30 +25,19 @@ jobs: strategy: matrix: os: [ubuntu-latest,windows-latest, macOS-latest] - java: [8, 11, 16, 17-ea] - jdk: [adopt-hotspot, zulu, adopt-openj9] + java: [8, 11, 17] + jdk: [temurin, zulu, adopt-openj9] fail-fast: false runs-on: ${{ matrix.os }} steps: - - name: Checkout - uses: actions/checkout@v2 - - - name: Set up cache for ~./m2/repository - uses: actions/cache@v2.1.6 - with: - path: ~/.m2/repository - key: maven-${{ matrix.os }}-java${{ matrix.java }}-${{ hashFiles('**/pom.xml') }} - restore-keys: | - maven-${{ matrix.os }}-java${{ matrix.java }}- - maven-${{ matrix.os }}- - - - name: Set up JDK - uses: actions/setup-java@v2.3.1 + - uses: actions/checkout@v2 + - uses: actions/setup-java@v2 with: distribution: ${{ matrix.jdk }} java-version: ${{ matrix.java }} + cache: 'maven' - name: Build with Maven - run: mvn install javadoc:javadoc -e -B -V -Pno-tests-if-not-on-osx + run: mvn install javadoc:javadoc site -e -B -V -Pno-tests-if-not-on-osx From e1450e99c53e45a4935f4bd65b4349877d6cdbb1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 2 Oct 2021 17:59:27 +0000 Subject: [PATCH 007/114] Bump sisu-maven-plugin from 0.3.4 to 0.3.5 Bumps sisu-maven-plugin from 0.3.4 to 0.3.5. --- updated-dependencies: - dependency-name: org.eclipse.sisu:sisu-maven-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index a6b9357..ebb1a42 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -30,7 +30,7 @@ org.eclipse.sisu sisu-maven-plugin - 0.3.4 + 0.3.5 index-project From 41254954fad1c672e27ccabb246d595a284a371f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Nov 2021 23:02:12 +0000 Subject: [PATCH 008/114] Bump qdox from 2.0.0 to 2.0.1 Bumps [qdox](https://github.com/paul-hammant/qdox) from 2.0.0 to 2.0.1. - [Release notes](https://github.com/paul-hammant/qdox/releases) - [Commits](https://github.com/paul-hammant/qdox/compare/qdox-2.0.0...qdox-2.0.1) --- updated-dependencies: - dependency-name: com.thoughtworks.qdox:qdox dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index ebb1a42..bd36e43 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -72,7 +72,7 @@ com.thoughtworks.qdox qdox - 2.0.0 + 2.0.1 javax.inject From 1b811cf819468bde156ae853d02d82100835b9a6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Nov 2021 23:02:44 +0000 Subject: [PATCH 009/114] Bump mockito-core from 3.12.4 to 4.1.0 Bumps [mockito-core](https://github.com/mockito/mockito) from 3.12.4 to 4.1.0. - [Release notes](https://github.com/mockito/mockito/releases) - [Commits](https://github.com/mockito/mockito/compare/v3.12.4...v4.1.0) --- updated-dependencies: - dependency-name: org.mockito:mockito-core dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index bd36e43..71a4e9a 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -102,7 +102,7 @@ org.mockito mockito-core - 3.12.4 + 4.1.0 test From a185c795c2b73f465883e3006ddafd3758ab8eeb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Dec 2021 23:03:17 +0000 Subject: [PATCH 010/114] Bump mockito-core from 4.1.0 to 4.2.0 Bumps [mockito-core](https://github.com/mockito/mockito) from 4.1.0 to 4.2.0. - [Release notes](https://github.com/mockito/mockito/releases) - [Commits](https://github.com/mockito/mockito/compare/v4.1.0...v4.2.0) --- updated-dependencies: - dependency-name: org.mockito:mockito-core dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 71a4e9a..b012e73 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -102,7 +102,7 @@ org.mockito mockito-core - 4.1.0 + 4.2.0 test From cf4754272d78534b0212f676a74e766cffa13dc8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Oct 2021 23:03:32 +0000 Subject: [PATCH 011/114] Bump maven-shared-resources from 3 to 4 Bumps [maven-shared-resources](https://github.com/apache/maven-shared-resources) from 3 to 4. - [Release notes](https://github.com/apache/maven-shared-resources/releases) - [Commits](https://github.com/apache/maven-shared-resources/commits) --- updated-dependencies: - dependency-name: org.apache.maven.shared:maven-shared-resources dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f551ae9..48e4735 100644 --- a/pom.xml +++ b/pom.xml @@ -56,7 +56,7 @@ org.apache.maven.shared maven-shared-resources - 3 + 4 From 5b2b1261a16cd9e70302a52c360f742373535053 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Jan 2022 23:03:19 +0000 Subject: [PATCH 012/114] Bump maven-compiler-plugin from 3.8.1 to 3.9.0 Bumps [maven-compiler-plugin](https://github.com/apache/maven-compiler-plugin) from 3.8.1 to 3.9.0. - [Release notes](https://github.com/apache/maven-compiler-plugin/releases) - [Commits](https://github.com/apache/maven-compiler-plugin/compare/maven-compiler-plugin-3.8.1...maven-compiler-plugin-3.9.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-compiler-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 48e4735..941576f 100644 --- a/pom.xml +++ b/pom.xml @@ -63,7 +63,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.8.1 + 3.9.0 org.apache.maven.plugins From 9b7020ed5326c9324eb8d8529f03d48ebea89f86 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jan 2022 23:02:25 +0000 Subject: [PATCH 013/114] Bump release-drafter/release-drafter from 5.15.0 to 5.17.5 Bumps [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter) from 5.15.0 to 5.17.5. - [Release notes](https://github.com/release-drafter/release-drafter/releases) - [Commits](https://github.com/release-drafter/release-drafter/compare/v5.15.0...v5.17.5) --- updated-dependencies: - dependency-name: release-drafter/release-drafter dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/release-drafter.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml index 4e2af99..df761a9 100644 --- a/.github/workflows/release-drafter.yml +++ b/.github/workflows/release-drafter.yml @@ -7,6 +7,6 @@ jobs: update_release_draft: runs-on: ubuntu-latest steps: - - uses: release-drafter/release-drafter@v5.15.0 + - uses: release-drafter/release-drafter@v5.17.5 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 33ab74f9e07b3f297aa49f3a30b77e61e0c43a2b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Jan 2022 23:02:45 +0000 Subject: [PATCH 014/114] Bump release-drafter/release-drafter from 5.17.5 to 5.17.6 Bumps [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter) from 5.17.5 to 5.17.6. - [Release notes](https://github.com/release-drafter/release-drafter/releases) - [Commits](https://github.com/release-drafter/release-drafter/compare/v5.17.5...v5.17.6) --- updated-dependencies: - dependency-name: release-drafter/release-drafter dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/release-drafter.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml index df761a9..8c0dc6f 100644 --- a/.github/workflows/release-drafter.yml +++ b/.github/workflows/release-drafter.yml @@ -7,6 +7,6 @@ jobs: update_release_draft: runs-on: ubuntu-latest steps: - - uses: release-drafter/release-drafter@v5.17.5 + - uses: release-drafter/release-drafter@v5.17.6 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 3ed346cffc9124ad784e0a9afcde0f2fcbe02137 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Jan 2022 23:03:03 +0000 Subject: [PATCH 015/114] Bump mockito-core from 4.2.0 to 4.3.0 Bumps [mockito-core](https://github.com/mockito/mockito) from 4.2.0 to 4.3.0. - [Release notes](https://github.com/mockito/mockito/releases) - [Commits](https://github.com/mockito/mockito/compare/v4.2.0...v4.3.0) --- updated-dependencies: - dependency-name: org.mockito:mockito-core dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index b012e73..c31807b 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -102,7 +102,7 @@ org.mockito mockito-core - 4.2.0 + 4.3.0 test From acb10ab75caa7f0e960e5139eca55bda0d30872a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Jan 2022 23:03:07 +0000 Subject: [PATCH 016/114] Bump guice from 4.2.3 to 5.1.0 Bumps [guice](https://github.com/google/guice) from 4.2.3 to 5.1.0. - [Release notes](https://github.com/google/guice/releases) - [Commits](https://github.com/google/guice/compare/4.2.3...5.1.0) --- updated-dependencies: - dependency-name: com.google.inject:guice dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index b012e73..ec43fdf 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -108,7 +108,7 @@ com.google.inject guice - 4.2.3 + 5.1.0 test From c94c9efb111b3c11a45b34ef8345eaa09bf91ba9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Jan 2022 23:03:01 +0000 Subject: [PATCH 017/114] Bump mockito-core from 4.3.0 to 4.3.1 Bumps [mockito-core](https://github.com/mockito/mockito) from 4.3.0 to 4.3.1. - [Release notes](https://github.com/mockito/mockito/releases) - [Commits](https://github.com/mockito/mockito/compare/v4.3.0...v4.3.1) --- updated-dependencies: - dependency-name: org.mockito:mockito-core dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index c31807b..c50cf69 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -102,7 +102,7 @@ org.mockito mockito-core - 4.3.0 + 4.3.1 test From 86e0436075daeba07b702a8429251dd9829f39df Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Tue, 1 Feb 2022 07:05:16 +1000 Subject: [PATCH 018/114] requires static from deeper level must be included if requested. see MCOMPILER-481 (#106) * fix issues including requires static. see MCOMPILER-481 Signed-off-by: Olivier Lamy Co-authored-by: rfscholte --- .../java/jpms/AsmModuleInfoParser.java | 5 +- .../java/jpms/JavaModuleDescriptor.java | 46 +++++++- .../languages/java/jpms/LocationManager.java | 36 ++++--- .../java/jpms/ResolvePathsResult.java | 11 ++ .../java/jpms/SourceModuleInfoParser.java | 6 +- .../java/jpms/BinaryModuleInfoParser.java | 4 +- .../java/jpms/BinaryModuleInfoParserTest.java | 8 +- .../java/jpms/LocationManagerTest.java | 102 ++++++++++++++---- .../java/jpms/SourceModuleInfoParserTest.java | 16 +-- 9 files changed, 175 insertions(+), 59 deletions(-) diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/AsmModuleInfoParser.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/AsmModuleInfoParser.java index d20ba74..8587549 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/AsmModuleInfoParser.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/AsmModuleInfoParser.java @@ -23,7 +23,6 @@ import java.io.InputStream; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.List; @@ -74,7 +73,7 @@ public void visitRequire( String module, int access, String version ) modifiers.add( JavaModuleDescriptor.JavaRequires.JavaModifier.TRANSITIVE ); } - wrapper.builder.requires​( modifiers, module ); + wrapper.builder.requires( modifiers, module ); } else { @@ -109,7 +108,7 @@ public void visitProvide( String service, String... providers ) { renamedProvides.add( provider.replace( '/', '.' ) ); } - wrapper.builder.provides​( service.replace( '/', '.' ), renamedProvides ); + wrapper.builder.provides( service.replace( '/', '.' ), renamedProvides ); } }; } diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/JavaModuleDescriptor.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/JavaModuleDescriptor.java index d4a7f82..37ac927 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/JavaModuleDescriptor.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/JavaModuleDescriptor.java @@ -128,7 +128,19 @@ public boolean equals( Object obj ) } return true; } - + + @Override + public String toString() { + return "JavaModuleDescriptor{" + + "name='" + name + '\'' + + ", automatic=" + automatic + + ", requires=" + requires + + ", exports=" + exports + + ", uses=" + uses + + ", provides=" + provides + + '}'; + } + /** * A JavaModuleDescriptor Builder * @@ -158,7 +170,7 @@ private Builder setAutomatic( boolean isAutomatic ) * @param name The module name * @return This builder */ - public Builder requires​( Set modifiers, String name ) + public Builder requires( Set modifiers, String name ) { jModule.requires.add( new JavaRequires( modifiers, name ) ); return this; @@ -213,7 +225,7 @@ public Builder uses( String service ) return this; } - public Builder provides​( String service, List providers ) + public Builder provides( String service, List providers ) { jModule.provides.add( new JavaProvides( service, providers ) ); return this; @@ -254,7 +266,7 @@ private JavaRequires( String name ) this.name = name; } - public Set modifiers​() + public Set modifiers() { return modifiers; } @@ -270,7 +282,7 @@ public String name() * @author Robert Scholte * @since 1.0.0 */ - public static enum JavaModifier + public enum JavaModifier { STATIC, TRANSITIVE } @@ -308,6 +320,14 @@ public boolean equals( Object obj ) } return true; } + + @Override + public String toString() { + return "JavaRequires{" + + "modifiers=" + modifiers + + ", name='" + name + '\'' + + '}'; + } } /** @@ -377,6 +397,14 @@ public boolean equals( Object obj ) } return true; } + + @Override + public String toString() { + return "JavaExports{" + + "source='" + source + '\'' + + ", targets=" + targets + + '}'; + } } /** @@ -440,5 +468,13 @@ public boolean equals( Object obj ) } return true; } + + @Override + public String toString() { + return "JavaProvides{" + + "service='" + service + '\'' + + ", providers=" + providers + + '}'; + } } } diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/LocationManager.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/LocationManager.java index 3ec20e8..2a01618 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/LocationManager.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/LocationManager.java @@ -261,8 +261,9 @@ public String extract( Path path ) Collections.unmodifiableMap( availableNamedModules ), Collections.unmodifiableMap( availableProviders ), requiredNamedModules, - true, - true ); + true, + true, + request.isIncludeStatic()); } for ( String additionalModule : request.getAdditionalModules() ) @@ -271,8 +272,9 @@ public String extract( Path path ) Collections.unmodifiableMap( availableNamedModules ), Collections.unmodifiableMap( availableProviders ), requiredNamedModules, - request.isIncludeStatic(), - true ); + true, + true, + request.isIncludeStatic()); } // in case of identical module names, first one wins @@ -400,19 +402,21 @@ private void selectRequires( JavaModuleDescriptor module, Map availableModules, Map> availableProviders, Set namedModules, - boolean includeStatic, - boolean includeTransitive ) + boolean isRootModule, + boolean includeAsTransitive, + boolean includeStatic) { for ( JavaModuleDescriptor.JavaRequires requires : module.requires() ) { // includeTransitive is one level deeper compared to includeStatic - if ( includeStatic || !requires.modifiers​().contains( JavaModuleDescriptor.JavaRequires.JavaModifier.STATIC ) ) + if ( isRootModule + || includeStatic + || includeAsTransitive + || !requires.modifiers().contains( JavaModuleDescriptor.JavaRequires.JavaModifier.STATIC ) + || requires.modifiers().contains( JavaModuleDescriptor.JavaRequires.JavaModifier.TRANSITIVE ) ) { - selectModule( requires.name(), availableModules, availableProviders, namedModules, false, includeStatic ); - } - else if ( includeTransitive && requires.modifiers​().contains( JavaModuleDescriptor.JavaRequires.JavaModifier.TRANSITIVE ) ) - { - selectModule( requires.name(), availableModules, availableProviders, namedModules, false, includeStatic ); + selectModule( requires.name(), availableModules, availableProviders, + namedModules, false, includeStatic, includeStatic ); } } @@ -426,7 +430,8 @@ else if ( includeTransitive && requires.modifiers​().contains( JavaModuleDescr if ( requiredModule != null && namedModules.add( providerModule ) ) { - selectRequires( requiredModule, availableModules, availableProviders, namedModules, false, includeStatic ); + selectRequires( requiredModule, availableModules, availableProviders, + namedModules, false, includeAsTransitive, includeStatic ); } } } @@ -434,13 +439,14 @@ else if ( includeTransitive && requires.modifiers​().contains( JavaModuleDescr } private void selectModule( String module, Map availableModules, Map> availableProviders, - Set namedModules, boolean includeStatic, boolean includeTransitive ) + Set namedModules, boolean isRootModule, boolean includeTransitive, boolean includeStatic ) { JavaModuleDescriptor requiredModule = availableModules.get( module ); if ( requiredModule != null && namedModules.add( module ) ) { - selectRequires( requiredModule, availableModules, availableProviders, namedModules, includeStatic, includeTransitive ); + selectRequires( requiredModule, availableModules, availableProviders, + namedModules, false, includeTransitive, includeStatic ); } } diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ResolvePathsResult.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ResolvePathsResult.java index 5fc0efe..a5fc834 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ResolvePathsResult.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ResolvePathsResult.java @@ -122,4 +122,15 @@ public Map getPathExceptions() { return pathExceptions; } + + @Override + public String toString() { + return "ResolvePathsResult{" + System.lineSeparator() + + "mainModuleDescriptor=" + mainModuleDescriptor + System.lineSeparator() + + ", pathElements=" + pathElements + System.lineSeparator() + + ", modulepathElements=" + modulepathElements + System.lineSeparator() + + ", classpathElements=" + classpathElements + System.lineSeparator() + + ", pathExceptions=" + pathExceptions + System.lineSeparator() + + '}'; + } } diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/SourceModuleInfoParser.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/SourceModuleInfoParser.java index 56508f9..40258f7 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/SourceModuleInfoParser.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/SourceModuleInfoParser.java @@ -23,8 +23,6 @@ import java.io.IOException; import java.nio.file.Path; import java.util.ArrayList; -import java.util.Collections; -import java.util.HashSet; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; @@ -69,7 +67,7 @@ public org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor fromSourcePa { modifiers.add( org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor.JavaRequires.JavaModifier.TRANSITIVE ); } - builder.requires​( modifiers , requires.getModule().getName() ); + builder.requires( modifiers , requires.getModule().getName() ); } else { @@ -107,7 +105,7 @@ public org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor fromSourcePa providers.add( provider.getName() ); } - builder.provides​( provides.getService().getName(), providers ); + builder.provides( provides.getService().getName(), providers ); } } else diff --git a/plexus-java/src/main/java9/org/codehaus/plexus/languages/java/jpms/BinaryModuleInfoParser.java b/plexus-java/src/main/java9/org/codehaus/plexus/languages/java/jpms/BinaryModuleInfoParser.java index a6752e7..6bab93e 100644 --- a/plexus-java/src/main/java9/org/codehaus/plexus/languages/java/jpms/BinaryModuleInfoParser.java +++ b/plexus-java/src/main/java9/org/codehaus/plexus/languages/java/jpms/BinaryModuleInfoParser.java @@ -52,7 +52,7 @@ JavaModuleDescriptor parse( InputStream in ) throws IOException { modifiers.add( org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor.JavaRequires.JavaModifier.TRANSITIVE ); } - builder.requires​( modifiers, requires.name() ); + builder.requires( modifiers, requires.name() ); } else { @@ -79,7 +79,7 @@ JavaModuleDescriptor parse( InputStream in ) throws IOException for ( ModuleDescriptor.Provides provides : descriptor.provides() ) { - builder.provides​( provides.service(), provides.providers() ); + builder.provides( provides.service(), provides.providers() ); } diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/BinaryModuleInfoParserTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/BinaryModuleInfoParserTest.java index a25bfcd..963b508 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/BinaryModuleInfoParserTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/BinaryModuleInfoParserTest.java @@ -110,7 +110,7 @@ public void testOutputDirectoryDescriptor() Set expectedRequires = JavaModuleDescriptor.newAutomaticModule( "_" ) .requires( "java.base" ) .requires( "java.xml" ) - .requires​( Collections.singleton( JavaRequires.JavaModifier.STATIC ), "com.google.common" ) + .requires( Collections.singleton( JavaRequires.JavaModifier.STATIC ), "com.google.common" ) .build() .requires(); @@ -192,9 +192,9 @@ public void testRequires() throws Exception Set expectedRequires = JavaModuleDescriptor.newAutomaticModule( "_" ) .requires( "java.base" ) .requires( "mod_r" ) - .requires​( Collections.singleton( JavaRequires.JavaModifier.STATIC ), "mod_r_s" ) - .requires​( Collections.singleton( JavaRequires.JavaModifier.TRANSITIVE ), "mod_r_t" ) - .requires​( new HashSet( Arrays.asList( JavaRequires.JavaModifier.STATIC, JavaRequires.JavaModifier.TRANSITIVE ) ), "mod_r_s_t" ) + .requires( Collections.singleton( JavaRequires.JavaModifier.STATIC ), "mod_r_s" ) + .requires( Collections.singleton( JavaRequires.JavaModifier.TRANSITIVE ), "mod_r_t" ) + .requires( new HashSet( Arrays.asList( JavaRequires.JavaModifier.STATIC, JavaRequires.JavaModifier.TRANSITIVE ) ), "mod_r_s_t" ) .build() .requires(); diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerTest.java index 1ed6d0b..35a6f4e 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerTest.java @@ -68,7 +68,7 @@ ModuleInfoParser getBinaryModuleInfoParser( Path jdkHome ) @Test public void testNoPaths() throws Exception { - ResolvePathsResult result = locationManager.resolvePaths( ResolvePathsRequest.ofFiles( Collections.emptyList() ) ); + ResolvePathsResult result = locationManager.resolvePaths( ResolvePathsRequest.ofFiles( Collections.emptyList() ) ); assertThat( result.getMainModuleDescriptor(), nullValue( JavaModuleDescriptor.class) ); assertThat( result.getPathElements().size(), is( 0 ) ); assertThat( result.getModulepathElements().size(), is( 0 ) ); @@ -81,7 +81,7 @@ public void testWithUnknownRequires() throws Exception { JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule( "base" ).requires( "java.base" ).requires( "jdk.net" ).build(); when( qdoxParser.fromSourcePath( any( Path.class ) ) ).thenReturn( descriptor ); - ResolvePathsRequest request = ResolvePathsRequest.ofFiles( Collections.emptyList() ).setMainModuleDescriptor( mockModuleInfoJava.toFile() ); + ResolvePathsRequest request = ResolvePathsRequest.ofFiles( Collections.emptyList() ).setMainModuleDescriptor( mockModuleInfoJava.toFile() ); ResolvePathsResult result = locationManager.resolvePaths( request ); @@ -178,7 +178,7 @@ public void testNonJar() throws Exception { Path p = Paths.get( "src/test/resources/nonjar/pom.xml" ); - ResolvePathsRequest request = ResolvePathsRequest.ofPaths( Arrays.asList( p ) ).setMainModuleDescriptor( mockModuleInfoJava ); + ResolvePathsRequest request = ResolvePathsRequest.ofPaths( Collections.singletonList( p ) ).setMainModuleDescriptor( mockModuleInfoJava ); ResolvePathsResult result = locationManager.resolvePaths( request ); @@ -193,7 +193,7 @@ public void testAdditionalModules() throws Exception JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule( "base" ).build(); when( qdoxParser.fromSourcePath( any( Path.class ) ) ).thenReturn( descriptor ); ResolvePathsRequest request = - ResolvePathsRequest.ofPaths( Arrays.asList( p ) ) + ResolvePathsRequest.ofPaths( Collections.singletonList( p ) ) .setMainModuleDescriptor( mockModuleInfoJava ) .setAdditionalModules( Collections.singletonList( "plexus.java" ) ); @@ -230,7 +230,7 @@ public void testNoMatchingProviders() throws Exception ResolvePathsRequest request = ResolvePathsRequest.ofPaths( def ).setMainModuleDescriptor( abc ).setIncludeAllProviders( true ); when( qdoxParser.fromSourcePath( abc ) ).thenReturn( JavaModuleDescriptor.newModule( "abc" ).uses( "device" ).build() ); - when( asmParser.getModuleDescriptor( def ) ).thenReturn( JavaModuleDescriptor.newModule( "def" ).provides​( "tool", Arrays.asList( "java", "javac" ) ).build() ); + when( asmParser.getModuleDescriptor( def ) ).thenReturn( JavaModuleDescriptor.newModule( "def" ).provides( "tool", Arrays.asList( "java", "javac" ) ).build() ); ResolvePathsResult result = locationManager.resolvePaths( request ); assertThat( result.getPathElements().size(), is( 1 ) ); @@ -248,7 +248,7 @@ public void testMainModuleDescriptorWithProviders() throws Exception ResolvePathsRequest request = ResolvePathsRequest.ofPaths( def ).setMainModuleDescriptor( abc ).setIncludeAllProviders( true ); when( qdoxParser.fromSourcePath( abc ) ).thenReturn( JavaModuleDescriptor.newModule( "abc" ).uses( "tool" ).build() ); - when( asmParser.getModuleDescriptor( def ) ).thenReturn( JavaModuleDescriptor.newModule( "def" ).provides​( "tool", Arrays.asList( "java", "javac" ) ).build() ); + when( asmParser.getModuleDescriptor( def ) ).thenReturn( JavaModuleDescriptor.newModule( "def" ).provides( "tool", Arrays.asList( "java", "javac" ) ).build() ); ResolvePathsResult result = locationManager.resolvePaths( request ); assertThat( result.getPathElements().size(), is( 1 ) ); @@ -265,7 +265,7 @@ public void testMainModuleDescriptorWithProvidersDontIncludeProviders() throws E ResolvePathsRequest request = ResolvePathsRequest.ofPaths( def ).setMainModuleDescriptor( abc ); when( qdoxParser.fromSourcePath( abc ) ).thenReturn( JavaModuleDescriptor.newModule( "abc" ).uses( "tool" ).build() ); - when( asmParser.getModuleDescriptor( def ) ).thenReturn( JavaModuleDescriptor.newModule( "def" ).provides​( "tool", Arrays.asList( "java", "javac" ) ).build() ); + when( asmParser.getModuleDescriptor( def ) ).thenReturn( JavaModuleDescriptor.newModule( "def" ).provides( "tool", Arrays.asList( "java", "javac" ) ).build() ); ResolvePathsResult result = locationManager.resolvePaths( request ); assertThat( result.getPathElements().size(), is( 1 ) ); @@ -283,7 +283,7 @@ public void testTransitiveProviders() throws Exception ResolvePathsRequest request = ResolvePathsRequest.ofPaths( def, ghi ).setMainModuleDescriptor( abc ).setIncludeAllProviders( true ); when( qdoxParser.fromSourcePath( abc ) ).thenReturn( JavaModuleDescriptor.newModule( "abc" ).requires( "ghi" ).build() ); - when( asmParser.getModuleDescriptor( def ) ).thenReturn( JavaModuleDescriptor.newModule( "def" ).provides​( "tool", Arrays.asList( "java", "javac" ) ).build() ); + when( asmParser.getModuleDescriptor( def ) ).thenReturn( JavaModuleDescriptor.newModule( "def" ).provides( "tool", Arrays.asList( "java", "javac" ) ).build() ); when( asmParser.getModuleDescriptor( ghi ) ).thenReturn( JavaModuleDescriptor.newModule( "ghi" ).uses( "tool" ).build() ); @@ -303,7 +303,7 @@ public void testDontIncludeProviders() throws Exception ResolvePathsRequest request = ResolvePathsRequest.ofPaths( def, ghi ).setMainModuleDescriptor( abc ); when( qdoxParser.fromSourcePath( abc ) ).thenReturn( JavaModuleDescriptor.newModule( "abc" ).requires( "ghi" ).build() ); - when( asmParser.getModuleDescriptor( def ) ).thenReturn( JavaModuleDescriptor.newModule( "def" ).provides​( "tool", Arrays.asList( "java", "javac" ) ).build() ); + when( asmParser.getModuleDescriptor( def ) ).thenReturn( JavaModuleDescriptor.newModule( "def" ).provides( "tool", Arrays.asList( "java", "javac" ) ).build() ); when( asmParser.getModuleDescriptor( ghi ) ).thenReturn( JavaModuleDescriptor.newModule( "ghi" ).uses( "tool" ).build() ); @@ -380,7 +380,7 @@ public void testTransitiveStatic() throws Exception when( qdoxParser.fromSourcePath( moduleA ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleA" ) .requires( "moduleB" ).build() ); when( asmParser.getModuleDescriptor( moduleB ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleB" ) - .requires​( Collections.singleton( JavaModifier.STATIC ), "moduleC" ).build() ); + .requires( Collections.singleton( JavaModifier.STATIC ), "moduleC" ).build() ); when( asmParser.getModuleDescriptor( moduleC ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleC" ).build() ); @@ -398,14 +398,16 @@ public void testDirectStatic() throws Exception Path moduleB = Paths.get( "src/test/resources/mock/jar0.jar" ); // any existing file Path moduleC = Paths.get( "src/test/resources/mock/jar1.jar" ); // any existing file Path moduleD = Paths.get( "src/test/resources/mock/jar2.jar" ); // any existing file - ResolvePathsRequest request = ResolvePathsRequest.ofPaths( moduleB, moduleC, moduleD ).setMainModuleDescriptor( moduleA ); + ResolvePathsRequest request = ResolvePathsRequest.ofPaths( moduleB, moduleC, moduleD ) + .setMainModuleDescriptor( moduleA ); + //.setIncludeStatic( true ); when( qdoxParser.fromSourcePath( moduleA ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleA" ) .requires( "moduleB" ) - .requires​( Collections.singleton( JavaModifier.STATIC ), "moduleD") + .requires( Collections.singleton( JavaModifier.STATIC ), "moduleD") .build() ); when( asmParser.getModuleDescriptor( moduleB ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleB" ) - .requires​( Collections.singleton( JavaModifier.STATIC ), "moduleC" ) + .requires( Collections.singleton( JavaModifier.STATIC ), "moduleC" ) .build() ); when( asmParser.getModuleDescriptor( moduleC ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleC" ).build() ); when( asmParser.getModuleDescriptor( moduleD ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleD" ).build() ); @@ -413,7 +415,7 @@ public void testDirectStatic() throws Exception ResolvePathsResult result = locationManager.resolvePaths( request ); assertThat( result.getPathElements().size(), is( 3 ) ); - assertThat( result.getModulepathElements().size(), is( 2 ) ); + assertThat( "content: " + result.getModulepathElements(), result.getModulepathElements().size(), is( 2 ) ); assertThat( result.getModulepathElements().containsKey( moduleB ), is( true ) ); assertThat( result.getModulepathElements().containsKey( moduleD ), is( true ) ); assertThat( result.getClasspathElements().size(), is( 1 ) ); @@ -460,23 +462,87 @@ public void testStaticTransitive() throws Exception .requires( "moduleB" ) .build() ); when( asmParser.getModuleDescriptor( moduleB ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleB" ) - .requires​( new HashSet( Arrays.asList( JavaModifier.STATIC,JavaModifier.TRANSITIVE ) ), "moduleC" ) + .requires( new HashSet<>( Arrays.asList( JavaModifier.STATIC,JavaModifier.TRANSITIVE ) ), "moduleC" ) .build() ); when( asmParser.getModuleDescriptor( moduleC ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleC" ) - .requires​( new HashSet( Arrays.asList( JavaModifier.STATIC,JavaModifier.TRANSITIVE ) ), "moduleD" ) + .requires( new HashSet<>( Arrays.asList( JavaModifier.STATIC ) ), "moduleD" ) .build() ); when( asmParser.getModuleDescriptor( moduleD ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleD" ).build() ); ResolvePathsResult result = locationManager.resolvePaths( request ); assertThat( result.getPathElements().size(), is( 3 ) ); - assertThat( result.getModulepathElements().size(), is( 2 ) ); + assertThat( "modulepathelements:" + result.getModulepathElements(), + result.getModulepathElements().size(), is( 2 ) ); assertThat( result.getModulepathElements().containsKey( moduleB ), is( true ) ); assertThat( result.getModulepathElements().containsKey( moduleC ), is( true ) ); assertThat( result.getClasspathElements().size(), is( 1 ) ); assertThat( result.getClasspathElements().contains( moduleD ), is( true ) ); assertThat( result.getPathExceptions().size(), is( 0 ) ); } - + + @Test + /** + * test case for https://issues.apache.org/jira/browse/MCOMPILER-481 + */ + public void includeDeeperRequiresStatic() throws Exception + { + Path moduleA = Paths.get( "src/test/resources/mock/module-info.java" ); // some file called module-info.java + Path moduleB = Paths.get( "src/test/resources/mock/jar0.jar" ); // any existing file + Path moduleC = Paths.get( "src/test/resources/mock/jar1.jar" ); // any existing file + ResolvePathsRequest request = ResolvePathsRequest.ofPaths( moduleA, moduleB, moduleC ) + .setMainModuleDescriptor( moduleA ) + .setIncludeStatic( true ); + when( qdoxParser.fromSourcePath( moduleA ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleA" ) + .requires( "moduleB") + .build() ); + when( asmParser.getModuleDescriptor( moduleB ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleB" ) + .requires( Collections.singleton( JavaModifier.STATIC ), "moduleC" ) + .build() ); + when( asmParser.getModuleDescriptor( moduleC ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleC" ).build() ); + + ResolvePathsResult result = locationManager.resolvePaths( request ); + assertThat( "modulepathelements:" + result.getModulepathElements(), + result.getModulepathElements().size(), is( 2 ) ); + assertThat( result.getModulepathElements().containsKey( moduleB ), is( true ) ); + assertThat( result.getModulepathElements().containsKey( moduleC ), is( true ) ); + + } + + @Test + /** + * test case for https://issues.apache.org/jira/browse/MCOMPILER-482 + */ + public void includeDeeperRequiresStaticTransitive() throws Exception + { + Path moduleA = Paths.get( "src/test/resources/mock/module-info.java" ); // some file called module-info.java core + Path moduleB = Paths.get( "src/test/resources/mock/jar0.jar" ); // any existing file + Path moduleC = Paths.get( "src/test/resources/mock/jar1.jar" ); // any existing file + Path moduleD = Paths.get( "src/test/resources/mock/jar2.jar" ); // any existing file + ResolvePathsRequest request = ResolvePathsRequest.ofPaths( moduleA, moduleB, moduleC, moduleD ) + .setMainModuleDescriptor( moduleA ) + .setIncludeStatic( true ); + when( qdoxParser.fromSourcePath( moduleA ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleA" ) + .requires( "moduleB") + .build() ); + when( asmParser.getModuleDescriptor( moduleB ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleB" ) + .requires( "moduleC" ) + .requires( new HashSet<>( Arrays.asList( JavaModifier.STATIC,JavaModifier.TRANSITIVE ) ), "moduleD" ) + .build() ); + when( asmParser.getModuleDescriptor( moduleC ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleC" ) + .requires( new HashSet<>( Arrays.asList( JavaModifier.STATIC,JavaModifier.TRANSITIVE ) ), "moduleD" ) + .build() ); + when( asmParser.getModuleDescriptor( moduleD ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleD" ) + .build() ); + + ResolvePathsResult result = locationManager.resolvePaths( request ); + assertThat( "modulepathelements:" + result.getModulepathElements(), + result.getModulepathElements().size(), is( 3 ) ); + assertThat( result.getModulepathElements().containsKey( moduleB ), is( true ) ); + assertThat( result.getModulepathElements().containsKey( moduleC ), is( true ) ); + assertThat( result.getModulepathElements().containsKey( moduleD ), is( true ) ); + + } + } diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/SourceModuleInfoParserTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/SourceModuleInfoParserTest.java index 36037fa..9c4b883 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/SourceModuleInfoParserTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/SourceModuleInfoParserTest.java @@ -49,23 +49,23 @@ public void test() throws Exception JavaRequires requires = requiresIter.next(); assertEquals( "d.e", requires.name() ); - assertFalse( requires.modifiers​().contains( JavaRequires.JavaModifier.STATIC ) ); - assertFalse( requires.modifiers​().contains( JavaRequires.JavaModifier.TRANSITIVE ) ); + assertFalse( requires.modifiers().contains( JavaRequires.JavaModifier.STATIC ) ); + assertFalse( requires.modifiers().contains( JavaRequires.JavaModifier.TRANSITIVE ) ); requires = requiresIter.next(); assertEquals( "s.d.e", requires.name() ); - assertTrue( requires.modifiers​().contains( JavaRequires.JavaModifier.STATIC ) ); - assertFalse( requires.modifiers​().contains( JavaRequires.JavaModifier.TRANSITIVE ) ); + assertTrue( requires.modifiers().contains( JavaRequires.JavaModifier.STATIC ) ); + assertFalse( requires.modifiers().contains( JavaRequires.JavaModifier.TRANSITIVE ) ); requires = requiresIter.next(); assertEquals( "t.d.e", requires.name() ); - assertFalse( requires.modifiers​().contains( JavaRequires.JavaModifier.STATIC ) ); - assertTrue( requires.modifiers​().contains( JavaRequires.JavaModifier.TRANSITIVE ) ); + assertFalse( requires.modifiers().contains( JavaRequires.JavaModifier.STATIC ) ); + assertTrue( requires.modifiers().contains( JavaRequires.JavaModifier.TRANSITIVE ) ); requires = requiresIter.next(); assertEquals( "s.t.d.e", requires.name() ); - assertTrue( requires.modifiers​().contains( JavaRequires.JavaModifier.STATIC ) ); - assertTrue( requires.modifiers​().contains( JavaRequires.JavaModifier.TRANSITIVE ) ); + assertTrue( requires.modifiers().contains( JavaRequires.JavaModifier.STATIC ) ); + assertTrue( requires.modifiers().contains( JavaRequires.JavaModifier.TRANSITIVE ) ); Iterator exportsIter = moduleDescriptor.exports().iterator(); From cdb4bff9baf67232ba0abe5eb1db702a396ecdb2 Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Tue, 1 Feb 2022 08:27:36 +1000 Subject: [PATCH 019/114] [maven-release-plugin] prepare release plexus-languages-1.1.1 --- plexus-java/pom.xml | 2 +- pom.xml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 8db3c56..96ab3b6 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus-languages - 1.1.1-SNAPSHOT + 1.1.1 plexus-java diff --git a/pom.xml b/pom.xml index 941576f..12a6922 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ plexus-languages - 1.1.1-SNAPSHOT + 1.1.1 pom Plexus Languages @@ -25,7 +25,7 @@ scm:git:git@github.com:codehaus-plexus/plexus-languages.git scm:git:git@github.com:codehaus-plexus/plexus-languages.git https://github.com/codehaus-plexus/plexus-languages/tree/plexus-languages - HEAD + plexus-languages-1.1.1 github @@ -42,7 +42,7 @@ scm:git:git@github.com:codehaus-plexus/plexus-languages.git UTF-8 8 - 2021-08-23T18:39:23Z + 2022-01-31T22:27:20Z From e78b906cf7f7f045ba99642b0133441b99e65025 Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Tue, 1 Feb 2022 08:27:44 +1000 Subject: [PATCH 020/114] [maven-release-plugin] prepare for next development iteration --- plexus-java/pom.xml | 2 +- pom.xml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 96ab3b6..ff623bc 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus-languages - 1.1.1 + 1.1.2-SNAPSHOT plexus-java diff --git a/pom.xml b/pom.xml index 12a6922..9ce4635 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ plexus-languages - 1.1.1 + 1.1.2-SNAPSHOT pom Plexus Languages @@ -25,7 +25,7 @@ scm:git:git@github.com:codehaus-plexus/plexus-languages.git scm:git:git@github.com:codehaus-plexus/plexus-languages.git https://github.com/codehaus-plexus/plexus-languages/tree/plexus-languages - plexus-languages-1.1.1 + HEAD github @@ -42,7 +42,7 @@ scm:git:git@github.com:codehaus-plexus/plexus-languages.git UTF-8 8 - 2022-01-31T22:27:20Z + 2022-01-31T22:27:44Z From 3951ec3e8ea4886eb9d1dc510f53b9197e9b7d74 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Apr 2022 23:02:44 +0000 Subject: [PATCH 021/114] Bump maven-javadoc-plugin from 3.3.1 to 3.4.0 Bumps [maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.3.1 to 3.4.0. - [Release notes](https://github.com/apache/maven-javadoc-plugin/releases) - [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.3.1...maven-javadoc-plugin-3.4.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-javadoc-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9ce4635..881c611 100644 --- a/pom.xml +++ b/pom.xml @@ -79,7 +79,7 @@ Caused by: org.apache.maven.plugin.MojoExecutionException: MavenReportException: Error while generating Javadoc: Exit code: 2 - javadoc: error - No source files for package org.codehaus.plexus.languages.java.jpms --> - 3.3.1 + 3.4.0 From 55a7fa97def82ddf24ce381db42d1065918a04c7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 8 Apr 2022 23:03:04 +0000 Subject: [PATCH 022/114] Bump actions/setup-java from 2 to 3 Bumps [actions/setup-java](https://github.com/actions/setup-java) from 2 to 3. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v2...v3) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/maven.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 8e43192..29787e4 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -33,7 +33,7 @@ jobs: steps: - uses: actions/checkout@v2 - - uses: actions/setup-java@v2 + - uses: actions/setup-java@v3 with: distribution: ${{ matrix.jdk }} java-version: ${{ matrix.java }} From 5fc6681c112ce15a894272ccd6d6550a9557d988 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 11 Mar 2022 23:04:41 +0000 Subject: [PATCH 023/114] Bump maven-compiler-plugin from 3.9.0 to 3.10.1 Bumps [maven-compiler-plugin](https://github.com/apache/maven-compiler-plugin) from 3.9.0 to 3.10.1. - [Release notes](https://github.com/apache/maven-compiler-plugin/releases) - [Commits](https://github.com/apache/maven-compiler-plugin/compare/maven-compiler-plugin-3.9.0...maven-compiler-plugin-3.10.1) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-compiler-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 881c611..85797ba 100644 --- a/pom.xml +++ b/pom.xml @@ -63,7 +63,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.9.0 + 3.10.1 org.apache.maven.plugins From 5cced98f0a9942091cffe656fa56130d53aeab13 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Mar 2022 23:03:51 +0000 Subject: [PATCH 024/114] Bump release-drafter/release-drafter from 5.17.6 to 5.19.0 Bumps [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter) from 5.17.6 to 5.19.0. - [Release notes](https://github.com/release-drafter/release-drafter/releases) - [Commits](https://github.com/release-drafter/release-drafter/compare/v5.17.6...v5.19.0) --- updated-dependencies: - dependency-name: release-drafter/release-drafter dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/release-drafter.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml index 8c0dc6f..96f54b5 100644 --- a/.github/workflows/release-drafter.yml +++ b/.github/workflows/release-drafter.yml @@ -7,6 +7,6 @@ jobs: update_release_draft: runs-on: ubuntu-latest steps: - - uses: release-drafter/release-drafter@v5.17.6 + - uses: release-drafter/release-drafter@v5.19.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 736c7d5300654e0d57a9433819cb8eeeb9793557 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Apr 2022 23:03:11 +0000 Subject: [PATCH 025/114] Bump asm from 9.2 to 9.3 Bumps asm from 9.2 to 9.3. --- updated-dependencies: - dependency-name: org.ow2.asm:asm dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index ff623bc..2fa7c40 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -67,7 +67,7 @@ org.ow2.asm asm - 9.2 + 9.3 com.thoughtworks.qdox From 84d8ae78742a00286d60c46d81a1883b23e197a7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 Apr 2022 23:02:40 +0000 Subject: [PATCH 026/114] Bump mockito-core from 4.3.1 to 4.5.1 Bumps [mockito-core](https://github.com/mockito/mockito) from 4.3.1 to 4.5.1. - [Release notes](https://github.com/mockito/mockito/releases) - [Commits](https://github.com/mockito/mockito/compare/v4.3.1...v4.5.1) --- updated-dependencies: - dependency-name: org.mockito:mockito-core dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 2fa7c40..32a0fb2 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -102,7 +102,7 @@ org.mockito mockito-core - 4.3.1 + 4.5.1 test From 1089455ca36166dd31d7b696b6c1e4a3a7209225 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 28 Apr 2022 12:37:02 +0000 Subject: [PATCH 027/114] Bump actions/checkout from 2 to 3 Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v2...v3) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/maven.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 29787e4..2490a17 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -32,7 +32,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: actions/setup-java@v3 with: distribution: ${{ matrix.jdk }} From 59b3d409223c18bd1fc1b47fb17f626b0071f3f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thiago=20Henrique=20H=C3=BCpner?= Date: Thu, 5 May 2022 01:56:13 -0300 Subject: [PATCH 028/114] Fix typo module (#125) --- plexus-java/src/site/markdown/usage.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plexus-java/src/site/markdown/usage.md b/plexus-java/src/site/markdown/usage.md index 0912d30..730ee23 100644 --- a/plexus-java/src/site/markdown/usage.md +++ b/plexus-java/src/site/markdown/usage.md @@ -7,7 +7,7 @@ You start by using `ResolvePathsRequest.ofXXX`, where XXX is either Files, Paths The `ResolvePathRequest` also contains: - * mainModuleDescriptor: the path or file of the main module descriptor, can either be `mdouel-info.java` or `module-info.class` + * mainModuleDescriptor: the path or file of the main module descriptor, can either be `module-info.java` or `module-info.class` * additionalModules: the modules that will be addedusing `-add-modules` @@ -37,4 +37,4 @@ Additional features: * `JavaVersion.JAVA_SPECIFICATION_VERSION` represents `System.getProperty( "java.specification.version" )` - * `JavaVersion.JAVA_VERSION` represents `System.getProperty( "java.version" )` \ No newline at end of file + * `JavaVersion.JAVA_VERSION` represents `System.getProperty( "java.version" )` From e6b28bcb6ddfa17aab3886db765d289da911d20a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 May 2022 23:04:01 +0000 Subject: [PATCH 029/114] Bump release-drafter/release-drafter from 5.19.0 to 5.20.0 Bumps [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter) from 5.19.0 to 5.20.0. - [Release notes](https://github.com/release-drafter/release-drafter/releases) - [Commits](https://github.com/release-drafter/release-drafter/compare/v5.19.0...v5.20.0) --- updated-dependencies: - dependency-name: release-drafter/release-drafter dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/release-drafter.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml index 96f54b5..bc64388 100644 --- a/.github/workflows/release-drafter.yml +++ b/.github/workflows/release-drafter.yml @@ -7,6 +7,6 @@ jobs: update_release_draft: runs-on: ubuntu-latest steps: - - uses: release-drafter/release-drafter@v5.19.0 + - uses: release-drafter/release-drafter@v5.20.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From da0b680288c2b49da1236cae756c71304a0ddeab Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 3 Jun 2022 00:43:32 +0000 Subject: [PATCH 030/114] Bump mockito-core from 4.5.1 to 4.6.1 Bumps [mockito-core](https://github.com/mockito/mockito) from 4.5.1 to 4.6.1. - [Release notes](https://github.com/mockito/mockito/releases) - [Commits](https://github.com/mockito/mockito/compare/v4.5.1...v4.6.1) --- updated-dependencies: - dependency-name: org.mockito:mockito-core dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 32a0fb2..52f8c3c 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -102,7 +102,7 @@ org.mockito mockito-core - 4.5.1 + 4.6.1 test From 4745849bd6418c9d2f4328bf417e58e6cd7140a0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 10 Jun 2022 23:02:14 +0000 Subject: [PATCH 031/114] Bump maven-enforcer-plugin from 3.0.0 to 3.1.0 Bumps [maven-enforcer-plugin](https://github.com/apache/maven-enforcer) from 3.0.0 to 3.1.0. - [Release notes](https://github.com/apache/maven-enforcer/releases) - [Commits](https://github.com/apache/maven-enforcer/compare/enforcer-3.0.0...enforcer-3.1.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-enforcer-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 85797ba..eb20f28 100644 --- a/pom.xml +++ b/pom.xml @@ -121,7 +121,7 @@ org.apache.maven.plugins maven-enforcer-plugin - 3.0.0 + 3.1.0 enforce-java From be5f83b5cc90b9477646373c56734c66c84c8a8d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 9 Jun 2022 23:02:29 +0000 Subject: [PATCH 032/114] Bump plexus from 8 to 10 Bumps [plexus](https://github.com/codehaus-plexus/plexus-pom) from 8 to 10. - [Release notes](https://github.com/codehaus-plexus/plexus-pom/releases) - [Commits](https://github.com/codehaus-plexus/plexus-pom/commits) --- updated-dependencies: - dependency-name: org.codehaus.plexus:plexus dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index eb20f28..b5971e1 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus - 8 + 10 plexus-languages From 8c9dbe2943e94eb65877c84f5a293d1c32a86492 Mon Sep 17 00:00:00 2001 From: Sylwester Lachiewicz Date: Sun, 28 Aug 2022 19:36:17 +0200 Subject: [PATCH 033/114] Update release-drafter.yml --- .github/workflows/release-drafter.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml index bc64388..4000f8c 100644 --- a/.github/workflows/release-drafter.yml +++ b/.github/workflows/release-drafter.yml @@ -7,6 +7,6 @@ jobs: update_release_draft: runs-on: ubuntu-latest steps: - - uses: release-drafter/release-drafter@v5.20.0 + - uses: release-drafter/release-drafter@v5 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From ee5c827acec846dd122251bd3b8fde00c696425a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Aug 2022 23:02:49 +0000 Subject: [PATCH 034/114] Bump mockito-core from 4.6.1 to 4.7.0 Bumps [mockito-core](https://github.com/mockito/mockito) from 4.6.1 to 4.7.0. - [Release notes](https://github.com/mockito/mockito/releases) - [Commits](https://github.com/mockito/mockito/compare/v4.6.1...v4.7.0) --- updated-dependencies: - dependency-name: org.mockito:mockito-core dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 52f8c3c..abeea83 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -102,7 +102,7 @@ org.mockito mockito-core - 4.6.1 + 4.7.0 test From dbd5ddee758fd245dd18965e8524127bedd739cd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Aug 2022 23:02:45 +0000 Subject: [PATCH 035/114] Bump maven-javadoc-plugin from 3.4.0 to 3.4.1 Bumps [maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.4.0 to 3.4.1. - [Release notes](https://github.com/apache/maven-javadoc-plugin/releases) - [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.4.0...maven-javadoc-plugin-3.4.1) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-javadoc-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b5971e1..58e431f 100644 --- a/pom.xml +++ b/pom.xml @@ -79,7 +79,7 @@ Caused by: org.apache.maven.plugin.MojoExecutionException: MavenReportException: Error while generating Javadoc: Exit code: 2 - javadoc: error - No source files for package org.codehaus.plexus.languages.java.jpms --> - 3.4.0 + 3.4.1 From 50e0906ac50800bc516564f9ab00ce3688caec8a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Aug 2022 23:02:02 +0000 Subject: [PATCH 036/114] Bump maven-checkstyle-plugin from 3.1.2 to 3.2.0 Bumps [maven-checkstyle-plugin](https://github.com/apache/maven-checkstyle-plugin) from 3.1.2 to 3.2.0. - [Release notes](https://github.com/apache/maven-checkstyle-plugin/releases) - [Commits](https://github.com/apache/maven-checkstyle-plugin/compare/maven-checkstyle-plugin-3.1.2...maven-checkstyle-plugin-3.2.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-checkstyle-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 58e431f..98f212b 100644 --- a/pom.xml +++ b/pom.xml @@ -51,7 +51,7 @@ org.apache.maven.plugins maven-checkstyle-plugin - 3.1.2 + 3.2.0 org.apache.maven.shared From 831ae303299e4460cef6e090243bbf6a0764d56b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Sep 2022 23:03:06 +0000 Subject: [PATCH 037/114] Bump qdox from 2.0.1 to 2.0.2 Bumps [qdox](https://github.com/paul-hammant/qdox) from 2.0.1 to 2.0.2. - [Release notes](https://github.com/paul-hammant/qdox/releases) - [Commits](https://github.com/paul-hammant/qdox/compare/qdox-2.0.1...qdox-2.0.2) --- updated-dependencies: - dependency-name: com.thoughtworks.qdox:qdox dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index abeea83..2f92c18 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -72,7 +72,7 @@ com.thoughtworks.qdox qdox - 2.0.1 + 2.0.2 javax.inject From 27a90ceb7d8b7e4076096c111d5aa46893fe36c0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 7 Sep 2022 23:02:10 +0000 Subject: [PATCH 038/114] Bump mockito-core from 4.7.0 to 4.8.0 Bumps [mockito-core](https://github.com/mockito/mockito) from 4.7.0 to 4.8.0. - [Release notes](https://github.com/mockito/mockito/releases) - [Commits](https://github.com/mockito/mockito/compare/v4.7.0...v4.8.0) --- updated-dependencies: - dependency-name: org.mockito:mockito-core dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 2f92c18..0929e2d 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -102,7 +102,7 @@ org.mockito mockito-core - 4.7.0 + 4.8.0 test From dc7d36adfeb322f9139688a7baae42dce1306e74 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Oct 2022 23:02:09 +0000 Subject: [PATCH 039/114] Bump mockito-core from 4.8.0 to 4.8.1 Bumps [mockito-core](https://github.com/mockito/mockito) from 4.8.0 to 4.8.1. - [Release notes](https://github.com/mockito/mockito/releases) - [Commits](https://github.com/mockito/mockito/compare/v4.8.0...v4.8.1) --- updated-dependencies: - dependency-name: org.mockito:mockito-core dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 0929e2d..bf9887b 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -102,7 +102,7 @@ org.mockito mockito-core - 4.8.0 + 4.8.1 test From 49b16535dccd23b60ac70f8e013d8f7a96b3fea4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 13 Oct 2022 23:02:11 +0000 Subject: [PATCH 040/114] Bump qdox from 2.0.2 to 2.0.3 Bumps [qdox](https://github.com/paul-hammant/qdox) from 2.0.2 to 2.0.3. - [Release notes](https://github.com/paul-hammant/qdox/releases) - [Commits](https://github.com/paul-hammant/qdox/compare/qdox-2.0.2...qdox-2.0.3) --- updated-dependencies: - dependency-name: com.thoughtworks.qdox:qdox dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index bf9887b..a9f35a3 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -72,7 +72,7 @@ com.thoughtworks.qdox qdox - 2.0.2 + 2.0.3 javax.inject From 3968d665c7caf11c52b9b8fd7f2c4eaf98060713 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Oct 2022 23:19:06 +0000 Subject: [PATCH 041/114] Bump asm from 9.3 to 9.4 Bumps asm from 9.3 to 9.4. --- updated-dependencies: - dependency-name: org.ow2.asm:asm dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index a9f35a3..208003c 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -67,7 +67,7 @@ org.ow2.asm asm - 9.3 + 9.4 com.thoughtworks.qdox From ed811be6541246d156c6f5a1b437ed5b14021c1b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 28 Dec 2022 23:00:39 +0000 Subject: [PATCH 042/114] Bump mockito-core from 4.8.1 to 4.11.0 Bumps [mockito-core](https://github.com/mockito/mockito) from 4.8.1 to 4.11.0. - [Release notes](https://github.com/mockito/mockito/releases) - [Commits](https://github.com/mockito/mockito/compare/v4.8.1...v4.11.0) --- updated-dependencies: - dependency-name: org.mockito:mockito-core dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 208003c..06fdf50 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -102,7 +102,7 @@ org.mockito mockito-core - 4.8.1 + 4.11.0 test From 6d09c0c516e1ddf717d69f5ffe7e54ccb5f73f38 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Nov 2022 23:04:19 +0000 Subject: [PATCH 043/114] Bump maven-shared-resources from 4 to 5 Bumps [maven-shared-resources](https://github.com/apache/maven-shared-resources) from 4 to 5. - [Release notes](https://github.com/apache/maven-shared-resources/releases) - [Commits](https://github.com/apache/maven-shared-resources/commits) --- updated-dependencies: - dependency-name: org.apache.maven.shared:maven-shared-resources dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 98f212b..b5263a7 100644 --- a/pom.xml +++ b/pom.xml @@ -56,7 +56,7 @@ org.apache.maven.shared maven-shared-resources - 4 + 5 From 26f6fd4a57dbc11d7dc2d242acd205aca6004184 Mon Sep 17 00:00:00 2001 From: Sylwester Lachiewicz Date: Sun, 1 Jan 2023 14:32:21 +0100 Subject: [PATCH 044/114] Bump maven-jar-plugin to 3.3.0 to have reproducible builds --- pom.xml | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/pom.xml b/pom.xml index b5263a7..4590d87 100644 --- a/pom.xml +++ b/pom.xml @@ -60,11 +60,6 @@ - - org.apache.maven.plugins - maven-compiler-plugin - 3.10.1 - org.apache.maven.plugins maven-release-plugin @@ -75,12 +70,13 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.4.1 + + org.apache.maven.plugins + maven-jar-plugin + 3.3.0 + @@ -96,13 +92,6 @@ - - org.codehaus.mojo - cobertura-maven-plugin - - - - org.apache.maven.plugins maven-pmd-plugin From 4d28443424a90b83b4568142f26bb63008e16730 Mon Sep 17 00:00:00 2001 From: Sylwester Lachiewicz Date: Sun, 1 Jan 2023 20:04:59 +0100 Subject: [PATCH 045/114] (doc) switch scm url to https --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 4590d87..6dfeb4d 100644 --- a/pom.xml +++ b/pom.xml @@ -22,8 +22,8 @@ - scm:git:git@github.com:codehaus-plexus/plexus-languages.git - scm:git:git@github.com:codehaus-plexus/plexus-languages.git + scm:git:htts://github.com/codehaus-plexus/plexus-languages.git + scm:git:https://github.com/codehaus-plexus/plexus-languages.git https://github.com/codehaus-plexus/plexus-languages/tree/plexus-languages HEAD @@ -39,7 +39,7 @@ - scm:git:git@github.com:codehaus-plexus/plexus-languages.git + scm:git:https://github.com/codehaus-plexus/plexus-languages.git UTF-8 8 2022-01-31T22:27:44Z From 54827a08676ef5e3aadb2e48d45b594fa09ec4f4 Mon Sep 17 00:00:00 2001 From: Sylwester Lachiewicz Date: Sun, 1 Jan 2023 20:06:08 +0100 Subject: [PATCH 046/114] [maven-release-plugin] prepare release plexus-languages-1.1.2 --- plexus-java/pom.xml | 2 +- pom.xml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 06fdf50..f29e014 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus-languages - 1.1.2-SNAPSHOT + 1.1.2 plexus-java diff --git a/pom.xml b/pom.xml index 6dfeb4d..85dbebe 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ plexus-languages - 1.1.2-SNAPSHOT + 1.1.2 pom Plexus Languages @@ -25,7 +25,7 @@ scm:git:htts://github.com/codehaus-plexus/plexus-languages.git scm:git:https://github.com/codehaus-plexus/plexus-languages.git https://github.com/codehaus-plexus/plexus-languages/tree/plexus-languages - HEAD + plexus-languages-1.1.2 github @@ -42,7 +42,7 @@ scm:git:https://github.com/codehaus-plexus/plexus-languages.git UTF-8 8 - 2022-01-31T22:27:44Z + 2023-01-01T19:06:01Z From ad59f053054922d0558f942546e1fccf0cb0bae2 Mon Sep 17 00:00:00 2001 From: Sylwester Lachiewicz Date: Sun, 1 Jan 2023 20:06:16 +0100 Subject: [PATCH 047/114] [maven-release-plugin] prepare for next development iteration --- plexus-java/pom.xml | 2 +- pom.xml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index f29e014..ec95278 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus-languages - 1.1.2 + 1.1.3-SNAPSHOT plexus-java diff --git a/pom.xml b/pom.xml index 85dbebe..9b0daef 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ plexus-languages - 1.1.2 + 1.1.3-SNAPSHOT pom Plexus Languages @@ -25,7 +25,7 @@ scm:git:htts://github.com/codehaus-plexus/plexus-languages.git scm:git:https://github.com/codehaus-plexus/plexus-languages.git https://github.com/codehaus-plexus/plexus-languages/tree/plexus-languages - plexus-languages-1.1.2 + HEAD github @@ -42,7 +42,7 @@ scm:git:https://github.com/codehaus-plexus/plexus-languages.git UTF-8 8 - 2023-01-01T19:06:01Z + 2023-01-01T19:06:16Z From 3de0d828497da440f8e3fade714590febad03098 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotrek=20=C5=BBygie=C5=82o?= Date: Sun, 1 Jan 2023 21:34:49 +0100 Subject: [PATCH 048/114] (doc) Fix scm protocol --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9b0daef..7543a86 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ - scm:git:htts://github.com/codehaus-plexus/plexus-languages.git + scm:git:https://github.com/codehaus-plexus/plexus-languages.git scm:git:https://github.com/codehaus-plexus/plexus-languages.git https://github.com/codehaus-plexus/plexus-languages/tree/plexus-languages HEAD From 04fe7d7f8f84f8ac4163d820b072ed1e48259e34 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Jan 2023 23:00:50 +0000 Subject: [PATCH 049/114] Bump maven-checkstyle-plugin from 3.2.0 to 3.2.1 Bumps [maven-checkstyle-plugin](https://github.com/apache/maven-checkstyle-plugin) from 3.2.0 to 3.2.1. - [Release notes](https://github.com/apache/maven-checkstyle-plugin/releases) - [Commits](https://github.com/apache/maven-checkstyle-plugin/compare/maven-checkstyle-plugin-3.2.0...maven-checkstyle-plugin-3.2.1) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-checkstyle-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7543a86..5848185 100644 --- a/pom.xml +++ b/pom.xml @@ -51,7 +51,7 @@ org.apache.maven.plugins maven-checkstyle-plugin - 3.2.0 + 3.2.1 org.apache.maven.shared From 345f8ea3885fba53e0f62a5099d421a9f88d7ab6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Feb 2023 23:00:52 +0000 Subject: [PATCH 050/114] Bump maven-enforcer-plugin from 3.1.0 to 3.2.1 Bumps [maven-enforcer-plugin](https://github.com/apache/maven-enforcer) from 3.1.0 to 3.2.1. - [Release notes](https://github.com/apache/maven-enforcer/releases) - [Commits](https://github.com/apache/maven-enforcer/compare/enforcer-3.1.0...enforcer-3.2.1) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-enforcer-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5848185..136ac91 100644 --- a/pom.xml +++ b/pom.xml @@ -110,7 +110,7 @@ org.apache.maven.plugins maven-enforcer-plugin - 3.1.0 + 3.2.1 enforce-java From cdafd05401d5f9b3650f72573e74101ff1c0fcf2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Feb 2023 23:56:40 +0000 Subject: [PATCH 051/114] Bump maven-javadoc-plugin from 3.4.1 to 3.5.0 Bumps [maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.4.1 to 3.5.0. - [Release notes](https://github.com/apache/maven-javadoc-plugin/releases) - [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.4.1...maven-javadoc-plugin-3.5.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-javadoc-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 136ac91..c225e55 100644 --- a/pom.xml +++ b/pom.xml @@ -70,7 +70,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.4.1 + 3.5.0 org.apache.maven.plugins From 461b8d5a990795bcfbaf8345fe3ac9ae4242cc6f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 14 Mar 2023 23:56:36 +0000 Subject: [PATCH 052/114] Bump maven-surefire-plugin from 2.22.2 to 3.0.0 Bumps [maven-surefire-plugin](https://github.com/apache/maven-surefire) from 2.22.2 to 3.0.0. - [Release notes](https://github.com/apache/maven-surefire/releases) - [Commits](https://github.com/apache/maven-surefire/compare/surefire-2.22.2...surefire-3.0.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-surefire-plugin dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index ec95278..474b34c 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -22,7 +22,7 @@ org.apache.maven.plugins maven-surefire-plugin - 2.22.2 + 3.0.0 From b82ffdc561bd0a82ec2a8734def7db510c57933e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 14 Mar 2023 23:56:42 +0000 Subject: [PATCH 053/114] Bump maven-failsafe-plugin from 2.22.2 to 3.0.0 Bumps [maven-failsafe-plugin](https://github.com/apache/maven-surefire) from 2.22.2 to 3.0.0. - [Release notes](https://github.com/apache/maven-surefire/releases) - [Commits](https://github.com/apache/maven-surefire/compare/surefire-2.22.2...surefire-3.0.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-failsafe-plugin dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 474b34c..2935160 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -44,7 +44,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 2.22.2 + 3.0.0 From 965b42c0f3492deae12387c666b665a0e1ee9e2d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Apr 2023 23:56:39 +0000 Subject: [PATCH 054/114] Bump maven-enforcer-plugin from 3.2.1 to 3.3.0 Bumps [maven-enforcer-plugin](https://github.com/apache/maven-enforcer) from 3.2.1 to 3.3.0. - [Release notes](https://github.com/apache/maven-enforcer/releases) - [Commits](https://github.com/apache/maven-enforcer/compare/enforcer-3.2.1...enforcer-3.3.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-enforcer-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c225e55..0d6cb46 100644 --- a/pom.xml +++ b/pom.xml @@ -110,7 +110,7 @@ org.apache.maven.plugins maven-enforcer-plugin - 3.2.1 + 3.3.0 enforce-java From f17afa2122a7a6475595f75166b57c114f52732b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Mar 2023 23:56:36 +0000 Subject: [PATCH 055/114] Bump asm from 9.4 to 9.5 Bumps asm from 9.4 to 9.5. --- updated-dependencies: - dependency-name: org.ow2.asm:asm dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 2935160..8da81bd 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -67,7 +67,7 @@ org.ow2.asm asm - 9.4 + 9.5 com.thoughtworks.qdox From 0b8a40ab86796529a50f16580e9cda4006c72c82 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Apr 2023 23:56:32 +0000 Subject: [PATCH 056/114] Bump maven-checkstyle-plugin from 3.2.1 to 3.2.2 Bumps [maven-checkstyle-plugin](https://github.com/apache/maven-checkstyle-plugin) from 3.2.1 to 3.2.2. - [Release notes](https://github.com/apache/maven-checkstyle-plugin/releases) - [Commits](https://github.com/apache/maven-checkstyle-plugin/compare/maven-checkstyle-plugin-3.2.1...maven-checkstyle-plugin-3.2.2) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-checkstyle-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0d6cb46..02732c1 100644 --- a/pom.xml +++ b/pom.xml @@ -51,7 +51,7 @@ org.apache.maven.plugins maven-checkstyle-plugin - 3.2.1 + 3.2.2 org.apache.maven.shared From 4fb7690724ce045960915237a961a3231f972b83 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 May 2023 21:52:47 +0000 Subject: [PATCH 057/114] Bump plexus from 10 to 13 Bumps [plexus](https://github.com/codehaus-plexus/plexus-pom) from 10 to 13. - [Release notes](https://github.com/codehaus-plexus/plexus-pom/releases) - [Commits](https://github.com/codehaus-plexus/plexus-pom/commits) --- updated-dependencies: - dependency-name: org.codehaus.plexus:plexus dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 02732c1..ff287d0 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus - 10 + 13 plexus-languages From a3d830e666214d555be5717a6e3576e957319a60 Mon Sep 17 00:00:00 2001 From: Sylwester Lachiewicz Date: Mon, 22 May 2023 23:55:11 +0200 Subject: [PATCH 058/114] Reformat code --- plexus-java/pom.xml | 110 +-- .../jpms/AbstractBinaryModuleInfoParser.java | 76 +- .../java/jpms/AsmModuleInfoParser.java | 120 +-- .../java/jpms/BinaryModuleInfoParser.java | 5 +- .../java/jpms/CmdModuleNameExtractor.java | 19 +- .../java/jpms/JavaModuleDescriptor.java | 355 +++---- .../languages/java/jpms/LocationManager.java | 518 +++++----- .../jpms/MainClassModuleNameExtractor.java | 91 +- .../jpms/ManifestModuleNameExtractor.java | 47 +- .../languages/java/jpms/ModuleInfoParser.java | 18 +- .../java/jpms/ModuleNameExtractor.java | 5 +- .../languages/java/jpms/ModuleNameSource.java | 7 +- .../java/jpms/ResolvePathRequest.java | 67 +- .../java/jpms/ResolvePathResult.java | 31 +- .../java/jpms/ResolvePathsRequest.java | 142 ++- .../java/jpms/ResolvePathsResult.java | 82 +- .../java/jpms/SourceModuleInfoParser.java | 104 +- .../languages/java/jpms/package-info.java | 2 +- .../languages/java/version/JavaVersion.java | 255 ++--- ...stractFilenameModuleNameExtractorTest.java | 53 +- .../java/jpms/BinaryModuleInfoParserTest.java | 258 ++--- .../java/jpms/CmdModuleNameExtractorTest.java | 18 +- .../java/jpms/LocationManagerIT.java | 154 ++- .../java/jpms/LocationManagerTest.java | 925 ++++++++++-------- .../MainClassModuleNameExtractorTest.java | 20 +- .../jpms/ManifestModuleNameExtractorTest.java | 36 +- .../java/jpms/SourceModuleInfoParserTest.java | 81 +- .../java/version/JavaVersionTest.java | 160 +-- pom.xml | 10 +- 29 files changed, 1751 insertions(+), 2018 deletions(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 8da81bd..d440146 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -16,53 +16,6 @@ 1.8 - - - - - org.apache.maven.plugins - maven-surefire-plugin - 3.0.0 - - - - - - org.eclipse.sisu - sisu-maven-plugin - 0.3.5 - - - index-project - - main-index - - - - - - - org.apache.maven.plugins - maven-failsafe-plugin - 3.0.0 - - - - integration-test - verify - - - - - - **/*Test.java - **/*IT.java - - - - - - org.ow2.asm @@ -82,16 +35,16 @@ - org.hamcrest - hamcrest - 2.2 - test + org.hamcrest + hamcrest + 2.2 + test - org.hamcrest - hamcrest-library - 2.2 - test + org.hamcrest + hamcrest-library + 2.2 + test junit @@ -113,6 +66,53 @@ + + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.0.0 + + + + + + org.eclipse.sisu + sisu-maven-plugin + 0.3.5 + + + index-project + + main-index + + + + + + + org.apache.maven.plugins + maven-failsafe-plugin + 3.0.0 + + + **/*Test.java + **/*IT.java + + + + + + integration-test + verify + + + + + + + jdk9 diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/AbstractBinaryModuleInfoParser.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/AbstractBinaryModuleInfoParser.java index 3b58137..81e90e9 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/AbstractBinaryModuleInfoParser.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/AbstractBinaryModuleInfoParser.java @@ -29,54 +29,41 @@ import org.codehaus.plexus.languages.java.version.JavaVersion; -abstract class AbstractBinaryModuleInfoParser implements ModuleInfoParser -{ +abstract class AbstractBinaryModuleInfoParser implements ModuleInfoParser { @Override - public JavaModuleDescriptor getModuleDescriptor( Path modulePath ) - throws IOException - { - return getModuleDescriptor( modulePath, JavaVersion.JAVA_SPECIFICATION_VERSION ); + public JavaModuleDescriptor getModuleDescriptor(Path modulePath) throws IOException { + return getModuleDescriptor(modulePath, JavaVersion.JAVA_SPECIFICATION_VERSION); } - + @Override - public JavaModuleDescriptor getModuleDescriptor( Path modulePath, JavaVersion jdkVersion ) - throws IOException - { + public JavaModuleDescriptor getModuleDescriptor(Path modulePath, JavaVersion jdkVersion) throws IOException { JavaModuleDescriptor descriptor; - if ( Files.isDirectory( modulePath ) ) - { - try ( InputStream in = Files.newInputStream( modulePath.resolve( "module-info.class" ) ) ) - { - descriptor = parse( in ); + if (Files.isDirectory(modulePath)) { + try (InputStream in = Files.newInputStream(modulePath.resolve("module-info.class"))) { + descriptor = parse(in); } - } - else - { - try ( JarFile jarFile = new JarFile( modulePath.toFile() ) ) - { + } else { + try (JarFile jarFile = new JarFile(modulePath.toFile())) { JarEntry moduleInfo; - if ( modulePath.toString().toLowerCase().endsWith( ".jmod" ) ) - { - moduleInfo = jarFile.getJarEntry( "classes/module-info.class" ); - } - else - { - moduleInfo = jarFile.getJarEntry( "module-info.class" ); + if (modulePath.toString().toLowerCase().endsWith(".jmod")) { + moduleInfo = jarFile.getJarEntry("classes/module-info.class"); + } else { + moduleInfo = jarFile.getJarEntry("module-info.class"); - if ( moduleInfo == null ) - { - Manifest manifest = jarFile.getManifest(); + if (moduleInfo == null) { + Manifest manifest = jarFile.getManifest(); - if ( manifest != null && "true".equalsIgnoreCase( manifest.getMainAttributes().getValue( "Multi-Release" ) ) ) - { - int javaVersion = Integer.valueOf( jdkVersion.asMajor().getValue( 1 ) ); - - for ( int version = javaVersion; version >= 9; version-- ) - { + if (manifest != null + && "true" + .equalsIgnoreCase( + manifest.getMainAttributes().getValue("Multi-Release"))) { + int javaVersion = + Integer.valueOf(jdkVersion.asMajor().getValue(1)); + + for (int version = javaVersion; version >= 9; version--) { String resource = "META-INF/versions/" + version + "/module-info.class"; - JarEntry entry = jarFile.getJarEntry( resource ); - if ( entry != null ) - { + JarEntry entry = jarFile.getJarEntry(resource); + if (entry != null) { moduleInfo = entry; break; } @@ -85,12 +72,9 @@ public JavaModuleDescriptor getModuleDescriptor( Path modulePath, JavaVersion jd } } - if ( moduleInfo != null ) - { - descriptor = parse( jarFile.getInputStream( moduleInfo ) ); - } - else - { + if (moduleInfo != null) { + descriptor = parse(jarFile.getInputStream(moduleInfo)); + } else { descriptor = null; } } @@ -98,5 +82,5 @@ public JavaModuleDescriptor getModuleDescriptor( Path modulePath, JavaVersion jd return descriptor; } - abstract JavaModuleDescriptor parse( InputStream in ) throws IOException; + abstract JavaModuleDescriptor parse(InputStream in) throws IOException; } diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/AsmModuleInfoParser.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/AsmModuleInfoParser.java index 8587549..c35ebcb 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/AsmModuleInfoParser.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/AsmModuleInfoParser.java @@ -35,89 +35,73 @@ /** * Extract information from module with ASM - * - * + * + * * @author Robert Scholte * @since 1.0.0 */ -class AsmModuleInfoParser extends AbstractBinaryModuleInfoParser -{ +class AsmModuleInfoParser extends AbstractBinaryModuleInfoParser { @Override - JavaModuleDescriptor parse( InputStream in ) - throws IOException - { + JavaModuleDescriptor parse(InputStream in) throws IOException { final JavaModuleDescriptorWrapper wrapper = new JavaModuleDescriptorWrapper(); - ClassReader reader = new ClassReader( in ); - reader.accept( new ClassVisitor( Opcodes.ASM9 ) - { - @Override - public ModuleVisitor visitModule( String name, int arg1, String arg2 ) - { - wrapper.builder = JavaModuleDescriptor.newModule( name ); - - return new ModuleVisitor( Opcodes.ASM9 ) - { + ClassReader reader = new ClassReader(in); + reader.accept( + new ClassVisitor(Opcodes.ASM9) { @Override - public void visitRequire( String module, int access, String version ) - { - if ( ( access & ( Opcodes.ACC_STATIC_PHASE | Opcodes.ACC_TRANSITIVE ) ) != 0 ) - { - Set modifiers = new LinkedHashSet<>(); - if ( ( access & Opcodes.ACC_STATIC_PHASE ) != 0 ) - { - modifiers.add( JavaModuleDescriptor.JavaRequires.JavaModifier.STATIC ); + public ModuleVisitor visitModule(String name, int arg1, String arg2) { + wrapper.builder = JavaModuleDescriptor.newModule(name); + + return new ModuleVisitor(Opcodes.ASM9) { + @Override + public void visitRequire(String module, int access, String version) { + if ((access & (Opcodes.ACC_STATIC_PHASE | Opcodes.ACC_TRANSITIVE)) != 0) { + Set modifiers = + new LinkedHashSet<>(); + if ((access & Opcodes.ACC_STATIC_PHASE) != 0) { + modifiers.add(JavaModuleDescriptor.JavaRequires.JavaModifier.STATIC); + } + if ((access & Opcodes.ACC_TRANSITIVE) != 0) { + modifiers.add(JavaModuleDescriptor.JavaRequires.JavaModifier.TRANSITIVE); + } + + wrapper.builder.requires(modifiers, module); + } else { + wrapper.builder.requires(module); + } } - if ( ( access & Opcodes.ACC_TRANSITIVE ) != 0 ) - { - modifiers.add( JavaModuleDescriptor.JavaRequires.JavaModifier.TRANSITIVE ); + + @Override + public void visitExport(String pn, int ms, String... targets) { + if (targets == null || targets.length == 0) { + wrapper.builder.exports(pn.replace('/', '.')); + } else { + wrapper.builder.exports( + pn.replace('/', '.'), new HashSet<>(Arrays.asList(targets))); + } } - wrapper.builder.requires( modifiers, module ); - } - else - { - wrapper.builder.requires( module ); - } - } + @Override + public void visitUse(String service) { + wrapper.builder.uses(service.replace('/', '.')); + } - @Override - public void visitExport( String pn, int ms, String... targets ) - { - if ( targets == null || targets.length == 0 ) - { - wrapper.builder.exports( pn.replace( '/', '.' ) ); - } - else - { - wrapper.builder.exports( pn.replace( '/', '.' ), new HashSet<>( Arrays.asList( targets ) ) ); - } - } - - @Override - public void visitUse( String service ) - { - wrapper.builder.uses( service.replace( '/', '.' ) ); - } - - @Override - public void visitProvide( String service, String... providers ) - { - List renamedProvides = new ArrayList<>( providers.length ); - for ( String provider : providers ) - { - renamedProvides.add( provider.replace( '/', '.' ) ); - } - wrapper.builder.provides( service.replace( '/', '.' ), renamedProvides ); + @Override + public void visitProvide(String service, String... providers) { + List renamedProvides = new ArrayList<>(providers.length); + for (String provider : providers) { + renamedProvides.add(provider.replace('/', '.')); + } + wrapper.builder.provides(service.replace('/', '.'), renamedProvides); + } + }; } - }; - } - }, 0 ); + }, + 0); return wrapper.builder.build(); } - private static class JavaModuleDescriptorWrapper - { + private static class JavaModuleDescriptorWrapper { private JavaModuleDescriptor.Builder builder; } } diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/BinaryModuleInfoParser.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/BinaryModuleInfoParser.java index dc9b1c8..e6e67c5 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/BinaryModuleInfoParser.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/BinaryModuleInfoParser.java @@ -18,7 +18,4 @@ * specific language governing permissions and limitations * under the License. */ -class BinaryModuleInfoParser extends AsmModuleInfoParser -{ - -} +class BinaryModuleInfoParser extends AsmModuleInfoParser {} diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/CmdModuleNameExtractor.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/CmdModuleNameExtractor.java index d08ffee..4d2ff96 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/CmdModuleNameExtractor.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/CmdModuleNameExtractor.java @@ -23,26 +23,23 @@ /** * This is just a placeholder class - * + * * @author Robert Scholte * @since 1.0.0 */ -public class CmdModuleNameExtractor -{ - public static void main( String[] args ) - { - System.err.println( "Use at least Java 9 to execute this class" ); - - System.exit( -1 ); +public class CmdModuleNameExtractor { + public static void main(String[] args) { + System.err.println("Use at least Java 9 to execute this class"); + + System.exit(-1); } /** - * + * * @param modulePath * @return */ - public static String getModuleName( Path modulePath ) - { + public static String getModuleName(Path modulePath) { throw new UnsupportedOperationException(); } } diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/JavaModuleDescriptor.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/JavaModuleDescriptor.java index 37ac927..84d001b 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/JavaModuleDescriptor.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/JavaModuleDescriptor.java @@ -27,103 +27,85 @@ /** * Simple representation of a ModuleDescriptor containing info required by this plugin. - * It will provide only methods matching Java 9 ModuleDescriptor, so once Java 9 is required, we can easily switch - * + * It will provide only methods matching Java 9 ModuleDescriptor, so once Java 9 is required, we can easily switch + * * @author Robert Scholte * @since 1.0.0 * */ -public class JavaModuleDescriptor -{ +public class JavaModuleDescriptor { private String name; - + private boolean automatic; private Set requires = new LinkedHashSet<>(); - + private Set exports = new LinkedHashSet<>(); - + private Set uses = new LinkedHashSet<>(); - + private Set provides = new LinkedHashSet<>(); - - public String name() - { + + public String name() { return name; } - public boolean isAutomatic() - { + public boolean isAutomatic() { return automatic; } - - public Set requires() - { - return Collections.unmodifiableSet( requires ); + + public Set requires() { + return Collections.unmodifiableSet(requires); } - public Set exports() - { - return Collections.unmodifiableSet( exports ); + public Set exports() { + return Collections.unmodifiableSet(exports); } - - public Set provides() - { - return Collections.unmodifiableSet( provides ); + + public Set provides() { + return Collections.unmodifiableSet(provides); } - - public Set uses() - { - return Collections.unmodifiableSet( uses ); + + public Set uses() { + return Collections.unmodifiableSet(uses); } - - public static JavaModuleDescriptor.Builder newModule( String name ) - { - return new Builder( name ).setAutomatic( false ); + + public static JavaModuleDescriptor.Builder newModule(String name) { + return new Builder(name).setAutomatic(false); + } + + public static Builder newAutomaticModule(String name) { + return new Builder(name).setAutomatic(true); } - - public static Builder newAutomaticModule( String name ) - { - return new Builder( name ).setAutomatic( true ); - } @Override - public int hashCode() - { - return Objects.hash( name, automatic, requires, exports ); + public int hashCode() { + return Objects.hash(name, automatic, requires, exports); } - + @Override - public boolean equals( Object obj ) - { - if ( this == obj ) - { + public boolean equals(Object obj) { + if (this == obj) { return true; } - if ( obj == null ) - { + if (obj == null) { return false; } - if ( getClass() != obj.getClass() ) - { + if (getClass() != obj.getClass()) { return false; } JavaModuleDescriptor other = (JavaModuleDescriptor) obj; - if ( automatic != other.automatic ) - { + if (automatic != other.automatic) { return false; } - if ( !Objects.equals( name, other.name ) ) - { + if (!Objects.equals(name, other.name)) { return false; } - if ( !Objects.equals( requires, other.requires ) ) - { + if (!Objects.equals(requires, other.requires)) { return false; } - if ( !Objects.equals( exports, other.exports ) ) - { + if (!Objects.equals(exports, other.exports)) { return false; } return true; @@ -131,191 +113,168 @@ public boolean equals( Object obj ) @Override public String toString() { - return "JavaModuleDescriptor{" + - "name='" + name + '\'' + - ", automatic=" + automatic + - ", requires=" + requires + - ", exports=" + exports + - ", uses=" + uses + - ", provides=" + provides + - '}'; + return "JavaModuleDescriptor{" + "name='" + + name + '\'' + ", automatic=" + + automatic + ", requires=" + + requires + ", exports=" + + exports + ", uses=" + + uses + ", provides=" + + provides + '}'; } /** * A JavaModuleDescriptor Builder - * + * * @author Robert Scholte * @since 1.0.0 */ - public static final class Builder - { + public static final class Builder { private JavaModuleDescriptor jModule; - - private Builder( String name ) - { + + private Builder(String name) { jModule = new JavaModuleDescriptor(); jModule.name = name; } - - private Builder setAutomatic( boolean isAutomatic ) - { + + private Builder setAutomatic(boolean isAutomatic) { jModule.automatic = isAutomatic; return this; } /** * Adds a dependence on a module with the given (and possibly empty) set of modifiers. - * + * * @param modifiers The set of modifiers * @param name The module name * @return This builder */ - public Builder requires( Set modifiers, String name ) - { - jModule.requires.add( new JavaRequires( modifiers, name ) ); + public Builder requires(Set modifiers, String name) { + jModule.requires.add(new JavaRequires(modifiers, name)); return this; } /** * Adds a dependence on a module with an empty set of modifiers. - * + * * @param name The module name * @return This builder */ - public Builder requires( String name ) - { - jModule.requires.add( new JavaRequires( name ) ); + public Builder requires(String name) { + jModule.requires.add(new JavaRequires(name)); return this; } /** * Adds an exported package. The package is exported to all modules. - * + * * @param source The package name * @return This builder */ - public Builder exports( String source ) - { - jModule.exports.add( new JavaExports( source ) ); + public Builder exports(String source) { + jModule.exports.add(new JavaExports(source)); return this; } /** * Adds an exported package. The package is exported to a set of target modules. - * + * * @param source The package name * @param targets The set of target modules names * @return This builder */ - public Builder exports( String source, Set targets ) - { - jModule.exports.add( new JavaExports( source, targets ) ); + public Builder exports(String source, Set targets) { + jModule.exports.add(new JavaExports(source, targets)); return this; } - + /** * Adds a service dependence. - * + * * @param service The service type * @return This Builder */ - public Builder uses( String service ) - { - jModule.uses.add( service ); + public Builder uses(String service) { + jModule.uses.add(service); return this; } - - public Builder provides( String service, List providers ) - { - jModule.provides.add( new JavaProvides( service, providers ) ); + + public Builder provides(String service, List providers) { + jModule.provides.add(new JavaProvides(service, providers)); return this; } /** * Builds and returns a ModuleDescriptor from its components. - * + * * @return The module descriptor */ - public JavaModuleDescriptor build() - { + public JavaModuleDescriptor build() { return jModule; } } - + /** * Represents ModuleDescriptor.Requires - * + * * @author Robert Scholte * @since 1.0.0 */ - public static class JavaRequires - { + public static class JavaRequires { private final Set modifiers; - + private final String name; - private JavaRequires( Set modifiers, String name ) - { + private JavaRequires(Set modifiers, String name) { this.modifiers = modifiers; this.name = name; } - private JavaRequires( String name ) - { + private JavaRequires(String name) { this.modifiers = Collections.emptySet(); this.name = name; } - public Set modifiers() - { + public Set modifiers() { return modifiers; } - - public String name() - { + + public String name() { return name; } - + /** * Represents ModuleDescriptor.Requires.Modifier - * + * * @author Robert Scholte * @since 1.0.0 */ - public enum JavaModifier - { - STATIC, TRANSITIVE + public enum JavaModifier { + STATIC, + TRANSITIVE } @Override - public int hashCode() - { - return Objects.hash( modifiers, name ); + public int hashCode() { + return Objects.hash(modifiers, name); } @Override - public boolean equals( Object obj ) - { - if ( this == obj ) - { + public boolean equals(Object obj) { + if (this == obj) { return true; } - if ( obj == null ) - { + if (obj == null) { return false; } - if ( getClass() != obj.getClass() ) - { + if (getClass() != obj.getClass()) { return false; } JavaRequires other = (JavaRequires) obj; - if ( !Objects.equals( modifiers, other.modifiers ) ) - { + if (!Objects.equals(modifiers, other.modifiers)) { return false; } - if ( !Objects.equals( name, other.name ) ) - { + if (!Objects.equals(name, other.name)) { return false; } return true; @@ -323,158 +282,126 @@ public boolean equals( Object obj ) @Override public String toString() { - return "JavaRequires{" + - "modifiers=" + modifiers + - ", name='" + name + '\'' + - '}'; + return "JavaRequires{" + "modifiers=" + modifiers + ", name='" + name + '\'' + '}'; } } - + /** * Represents ModuleDescriptor.Exports - * + * * @author Robert Scholte * @since 1.0.0 */ - public static class JavaExports - { + public static class JavaExports { private final String source; - + private final Set targets; - - private JavaExports( String source ) - { + + private JavaExports(String source) { this.source = source; this.targets = null; } - - public JavaExports( String source, Set targets ) - { + + public JavaExports(String source, Set targets) { this.source = source; this.targets = targets; } - public String source() - { + public String source() { return source; } - - public Set targets() - { + + public Set targets() { return targets; } @Override - public int hashCode() - { - return Objects.hash( source, targets ); + public int hashCode() { + return Objects.hash(source, targets); } @Override - public boolean equals( Object obj ) - { - if ( this == obj ) - { + public boolean equals(Object obj) { + if (this == obj) { return true; } - if ( obj == null ) - { + if (obj == null) { return false; } - if ( getClass() != obj.getClass() ) - { + if (getClass() != obj.getClass()) { return false; } - + JavaExports other = (JavaExports) obj; - if ( !Objects.equals( source, other.source ) ) - { - return false; + if (!Objects.equals(source, other.source)) { + return false; } - if ( !Objects.equals( targets, other.targets ) ) - { - return false; + if (!Objects.equals(targets, other.targets)) { + return false; } return true; } @Override public String toString() { - return "JavaExports{" + - "source='" + source + '\'' + - ", targets=" + targets + - '}'; + return "JavaExports{" + "source='" + source + '\'' + ", targets=" + targets + '}'; } } - + /** * Represents ModuleDescriptor.Provides - * + * * @author Robert Scholte * @since 1.0.0 */ - public static class JavaProvides - { + public static class JavaProvides { private final String service; - + private final List providers; - private JavaProvides( String service, List providers ) - { + private JavaProvides(String service, List providers) { this.service = service; this.providers = providers; } - public String service() - { + public String service() { return service; } - - public List providers() - { + + public List providers() { return providers; } - + @Override - public int hashCode() - { - return Objects.hash( service, providers ); + public int hashCode() { + return Objects.hash(service, providers); } - + @Override - public boolean equals( Object obj ) - { - if ( this == obj ) - { + public boolean equals(Object obj) { + if (this == obj) { return true; } - if ( obj == null ) - { + if (obj == null) { return false; } - if ( getClass() != obj.getClass() ) - { + if (getClass() != obj.getClass()) { return false; } - + JavaProvides other = (JavaProvides) obj; - if ( !Objects.equals( service, other.service ) ) - { - return false; + if (!Objects.equals(service, other.service)) { + return false; } - if ( !Objects.equals( providers, other.providers ) ) - { - return false; + if (!Objects.equals(providers, other.providers)) { + return false; } return true; } @Override public String toString() { - return "JavaProvides{" + - "service='" + service + '\'' + - ", providers=" + providers + - '}'; + return "JavaProvides{" + "service='" + service + '\'' + ", providers=" + providers + '}'; } } } diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/LocationManager.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/LocationManager.java index 2a01618..9a51ae6 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/LocationManager.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/LocationManager.java @@ -1,7 +1,5 @@ package org.codehaus.plexus.languages.java.jpms; -import java.io.File; - /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file @@ -21,6 +19,10 @@ * under the License. */ +import javax.inject.Named; +import javax.inject.Singleton; + +import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; @@ -33,33 +35,27 @@ import java.util.Map.Entry; import java.util.Set; -import javax.inject.Named; -import javax.inject.Singleton; - import org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor.JavaProvides; /** * Maps artifacts to modules and analyzes the type of required modules - * + * * @author Robert Scholte * @since 1.0.0 */ @Named @Singleton -public class LocationManager -{ +public class LocationManager { private SourceModuleInfoParser sourceParser; private ManifestModuleNameExtractor manifestModuleNameExtractor; - - public LocationManager() - { + + public LocationManager() { this.sourceParser = new SourceModuleInfoParser(); this.manifestModuleNameExtractor = new ManifestModuleNameExtractor(); } - - LocationManager( SourceModuleInfoParser sourceParser ) - { + + LocationManager(SourceModuleInfoParser sourceParser) { this.sourceParser = sourceParser; this.manifestModuleNameExtractor = new ManifestModuleNameExtractor(); } @@ -69,230 +65,204 @@ public LocationManager() * @return the parsed module descriptor * @throws IOException when descriptorPath could not be read */ - public ResolvePathResult parseModuleDescriptor( Path descriptorPath ) throws IOException - { + public ResolvePathResult parseModuleDescriptor(Path descriptorPath) throws IOException { JavaModuleDescriptor moduleDescriptor; - if ( descriptorPath.endsWith( "module-info.java" ) ) - { - moduleDescriptor = sourceParser.fromSourcePath( descriptorPath ); + if (descriptorPath.endsWith("module-info.java")) { + moduleDescriptor = sourceParser.fromSourcePath(descriptorPath); + } else { + throw new IOException("Invalid path to module descriptor: " + descriptorPath); } - else - { - throw new IOException( "Invalid path to module descriptor: " + descriptorPath ); - } - return new ResolvePathResult().setModuleDescriptor( moduleDescriptor) - .setModuleNameSource( ModuleNameSource.MODULEDESCRIPTOR ); + return new ResolvePathResult() + .setModuleDescriptor(moduleDescriptor) + .setModuleNameSource(ModuleNameSource.MODULEDESCRIPTOR); } - + /** * @param descriptorPath never {@code null} * @return the parsed module descriptor * @throws IOException when descriptorPath could not be read */ - public ResolvePathResult parseModuleDescriptor( File descriptorPath ) throws IOException - { - return parseModuleDescriptor( descriptorPath.toPath() ); + public ResolvePathResult parseModuleDescriptor(File descriptorPath) throws IOException { + return parseModuleDescriptor(descriptorPath.toPath()); } - + /** * @param descriptorPath never {@code null} * @return the parsed module descriptor * @throws IOException when descriptorPath could not be read */ - public ResolvePathResult parseModuleDescriptor( String descriptorPath ) throws IOException - { - return parseModuleDescriptor( Paths.get( descriptorPath ) ); + public ResolvePathResult parseModuleDescriptor(String descriptorPath) throws IOException { + return parseModuleDescriptor(Paths.get(descriptorPath)); } - + /** * Resolve a single jar - * + * * @param request the request * @return the {@link ResolvePathResult}, containing the name and optional module descriptor * @throws IOException if any occurs */ - public ResolvePathResult resolvePath( final ResolvePathRequest request ) throws IOException - { - ModuleNameExtractor filenameExtractor = new ModuleNameExtractor() - { - MainClassModuleNameExtractor extractor = new MainClassModuleNameExtractor( request.getJdkHome() ); - + public ResolvePathResult resolvePath(final ResolvePathRequest request) throws IOException { + ModuleNameExtractor filenameExtractor = new ModuleNameExtractor() { + MainClassModuleNameExtractor extractor = new MainClassModuleNameExtractor(request.getJdkHome()); + @Override - public String extract( Path file ) - throws IOException - { - if ( request.getJdkHome() != null ) - { - return extractor.extract( Collections.singletonMap( file, file ) ).get( file ); - } - else - { - return CmdModuleNameExtractor.getModuleName( file ); + public String extract(Path file) throws IOException { + if (request.getJdkHome() != null) { + return extractor + .extract(Collections.singletonMap(file, file)) + .get(file); + } else { + return CmdModuleNameExtractor.getModuleName(file); } } }; - - return resolvePath( request.toPath( request.getPathElement() ), filenameExtractor, getBinaryModuleInfoParser( request.getJdkHome() ) ); + + return resolvePath( + request.toPath(request.getPathElement()), + filenameExtractor, + getBinaryModuleInfoParser(request.getJdkHome())); } - + /** * Decide for every {@code request.getPathElements()} if it belongs to the modulePath or classPath, based on the * {@code request.getMainModuleDescriptor()}. - * + * * @param request the paths to resolve * @return the result of the resolution * @throws IOException if a critical IOException occurs */ - public ResolvePathsResult resolvePaths( final ResolvePathsRequest request ) - throws IOException - { + public ResolvePathsResult resolvePaths(final ResolvePathsRequest request) throws IOException { final ResolvePathsResult result = request.createResult(); - - Map pathElements = new LinkedHashMap<>( request.getPathElements().size() ); - final ModuleInfoParser binaryParser = getBinaryModuleInfoParser( request.getJdkHome() ); + Map pathElements = + new LinkedHashMap<>(request.getPathElements().size()); + + final ModuleInfoParser binaryParser = getBinaryModuleInfoParser(request.getJdkHome()); - JavaModuleDescriptor mainModuleDescriptor = getMainModuleDescriptor( request, binaryParser ); + JavaModuleDescriptor mainModuleDescriptor = getMainModuleDescriptor(request, binaryParser); - result.setMainModuleDescriptor( mainModuleDescriptor ); + result.setMainModuleDescriptor(mainModuleDescriptor); // key = service, value = names of modules that provide this service Map> availableProviders = new HashMap<>(); - if( mainModuleDescriptor != null && request.isIncludeAllProviders() ) - { - collectProviders( mainModuleDescriptor, availableProviders ); + if (mainModuleDescriptor != null && request.isIncludeAllProviders()) { + collectProviders(mainModuleDescriptor, availableProviders); } Map availableNamedModules = new HashMap<>(); - + Map moduleNameSources = new HashMap<>(); - + final Map filenameAutoModules = new HashMap<>(); - + // collect all modules from path - for ( final T t : request.getPathElements() ) - { + for (final T t : request.getPathElements()) { JavaModuleDescriptor moduleDescriptor; ModuleNameSource source; - - ModuleNameExtractor nameExtractor = new ModuleNameExtractor() - { + + ModuleNameExtractor nameExtractor = new ModuleNameExtractor() { @Override - public String extract( Path path ) - throws IOException - { - if ( request.getJdkHome() != null ) - { - filenameAutoModules.put( t, path ); - } - else - { - return CmdModuleNameExtractor.getModuleName( path ); + public String extract(Path path) throws IOException { + if (request.getJdkHome() != null) { + filenameAutoModules.put(t, path); + } else { + return CmdModuleNameExtractor.getModuleName(path); } return null; } }; - - try - { - ResolvePathResult resolvedPath = resolvePath( request.toPath( t ), nameExtractor, binaryParser ); - + + try { + ResolvePathResult resolvedPath = resolvePath(request.toPath(t), nameExtractor, binaryParser); + moduleDescriptor = resolvedPath.getModuleDescriptor(); source = resolvedPath.getModuleNameSource(); - } - catch ( Exception e ) - { - result.getPathExceptions().put( t, e ); + } catch (Exception e) { + result.getPathExceptions().put(t, e); - pathElements.put( t, null ); + pathElements.put(t, null); continue; } - + // Consider strategies how to handle duplicate modules by name // For now, just ignore it - if ( moduleDescriptor != null && moduleNameSources.putIfAbsent( moduleDescriptor.name(), source ) == null ) - { - availableNamedModules.put( moduleDescriptor.name(), moduleDescriptor ); - - if ( request.isIncludeAllProviders() ) - { - collectProviders( moduleDescriptor, availableProviders ); + if (moduleDescriptor != null && moduleNameSources.putIfAbsent(moduleDescriptor.name(), source) == null) { + availableNamedModules.put(moduleDescriptor.name(), moduleDescriptor); + + if (request.isIncludeAllProviders()) { + collectProviders(moduleDescriptor, availableProviders); } } - - pathElements.put( t, moduleDescriptor ); - + + pathElements.put(t, moduleDescriptor); } - result.setPathElements( pathElements ); - - if ( !filenameAutoModules.isEmpty() ) - { - MainClassModuleNameExtractor extractor = new MainClassModuleNameExtractor( request.getJdkHome() ); - - Map automodules = extractor.extract( filenameAutoModules ); - - for ( Map.Entry entry : automodules.entrySet() ) - { + result.setPathElements(pathElements); + + if (!filenameAutoModules.isEmpty()) { + MainClassModuleNameExtractor extractor = new MainClassModuleNameExtractor(request.getJdkHome()); + + Map automodules = extractor.extract(filenameAutoModules); + + for (Map.Entry entry : automodules.entrySet()) { String moduleName = entry.getValue(); - - if ( moduleName != null ) - { - JavaModuleDescriptor moduleDescriptor = JavaModuleDescriptor.newAutomaticModule( moduleName ).build(); - - moduleNameSources.put( moduleDescriptor.name(), ModuleNameSource.FILENAME ); - - availableNamedModules.put( moduleDescriptor.name(), moduleDescriptor ); - - pathElements.put( entry.getKey(), moduleDescriptor ); + + if (moduleName != null) { + JavaModuleDescriptor moduleDescriptor = + JavaModuleDescriptor.newAutomaticModule(moduleName).build(); + + moduleNameSources.put(moduleDescriptor.name(), ModuleNameSource.FILENAME); + + availableNamedModules.put(moduleDescriptor.name(), moduleDescriptor); + + pathElements.put(entry.getKey(), moduleDescriptor); } } } - + Set requiredNamedModules = new HashSet<>(); - if ( mainModuleDescriptor != null ) - { - requiredNamedModules.add( mainModuleDescriptor.name() ); - - selectRequires( mainModuleDescriptor, - Collections.unmodifiableMap( availableNamedModules ), - Collections.unmodifiableMap( availableProviders ), - requiredNamedModules, - true, - true, - request.isIncludeStatic()); + if (mainModuleDescriptor != null) { + requiredNamedModules.add(mainModuleDescriptor.name()); + + selectRequires( + mainModuleDescriptor, + Collections.unmodifiableMap(availableNamedModules), + Collections.unmodifiableMap(availableProviders), + requiredNamedModules, + true, + true, + request.isIncludeStatic()); } - - for ( String additionalModule : request.getAdditionalModules() ) - { - selectModule( additionalModule, - Collections.unmodifiableMap( availableNamedModules ), - Collections.unmodifiableMap( availableProviders ), - requiredNamedModules, - true, - true, - request.isIncludeStatic()); + + for (String additionalModule : request.getAdditionalModules()) { + selectModule( + additionalModule, + Collections.unmodifiableMap(availableNamedModules), + Collections.unmodifiableMap(availableProviders), + requiredNamedModules, + true, + true, + request.isIncludeStatic()); } // in case of identical module names, first one wins - Set collectedModules = new HashSet<>( requiredNamedModules.size() ); - - for ( Entry entry : pathElements.entrySet() ) - { - if ( entry.getValue() != null && requiredNamedModules.contains( entry.getValue().name() ) ) - { - if ( collectedModules.add( entry.getValue().name() ) ) - { - result.getModulepathElements().put( entry.getKey(), - moduleNameSources.get( entry.getValue().name() ) ); + Set collectedModules = new HashSet<>(requiredNamedModules.size()); + + for (Entry entry : pathElements.entrySet()) { + if (entry.getValue() != null + && requiredNamedModules.contains(entry.getValue().name())) { + if (collectedModules.add(entry.getValue().name())) { + result.getModulepathElements() + .put( + entry.getKey(), + moduleNameSources.get(entry.getValue().name())); } - } - else - { - result.getClasspathElements().add( entry.getKey() ); + } else { + result.getClasspathElements().add(entry.getKey()); } } @@ -302,170 +272,162 @@ public String extract( Path path ) /** * If the jdkHome is specified, its version it considered higher than the runtime java version. * In that case ASM must be used to read the module descriptor - * + * * @param jdkHome * @return */ - ModuleInfoParser getBinaryModuleInfoParser( final Path jdkHome ) - { + ModuleInfoParser getBinaryModuleInfoParser(final Path jdkHome) { final ModuleInfoParser binaryParser; - if ( jdkHome == null ) - { + if (jdkHome == null) { binaryParser = new BinaryModuleInfoParser(); - } - else - { + } else { binaryParser = new AsmModuleInfoParser(); } return binaryParser; } - private JavaModuleDescriptor getMainModuleDescriptor( final ResolvePathsRequest request, ModuleInfoParser binaryParser ) - throws IOException - { + private JavaModuleDescriptor getMainModuleDescriptor( + final ResolvePathsRequest request, ModuleInfoParser binaryParser) throws IOException { JavaModuleDescriptor mainModuleDescriptor; - + Path descriptorPath = request.getMainModuleDescriptor(); - - if ( descriptorPath != null ) - { - if ( descriptorPath.endsWith( "module-info.java" ) ) - { - mainModuleDescriptor = sourceParser.fromSourcePath( descriptorPath ); - } - else if ( descriptorPath.endsWith( "module-info.class" ) ) - { - mainModuleDescriptor = binaryParser.getModuleDescriptor( descriptorPath.getParent() ); - } - else - { - throw new IOException( "Invalid path to module descriptor: " + descriptorPath ); + + if (descriptorPath != null) { + if (descriptorPath.endsWith("module-info.java")) { + mainModuleDescriptor = sourceParser.fromSourcePath(descriptorPath); + } else if (descriptorPath.endsWith("module-info.class")) { + mainModuleDescriptor = binaryParser.getModuleDescriptor(descriptorPath.getParent()); + } else { + throw new IOException("Invalid path to module descriptor: " + descriptorPath); } - } - else - { + } else { mainModuleDescriptor = request.getModuleDescriptor(); } return mainModuleDescriptor; } - private ResolvePathResult resolvePath( Path path, ModuleNameExtractor fileModulenameExtractor, ModuleInfoParser binaryParser ) throws IOException - { + private ResolvePathResult resolvePath( + Path path, ModuleNameExtractor fileModulenameExtractor, ModuleInfoParser binaryParser) throws IOException { ResolvePathResult result = new ResolvePathResult(); JavaModuleDescriptor moduleDescriptor = null; - + // either jar or outputDirectory - if ( Files.isRegularFile( path ) && !path.getFileName().toString().endsWith( ".jar" ) ) - { - throw new IllegalArgumentException( "'" + path.toString() + "' not allowed on the path, only outputDirectories and jars are accepted" ); - } - - if ( Files.isRegularFile( path ) || Files.exists( path.resolve( "module-info.class" ) ) ) - { - moduleDescriptor = binaryParser.getModuleDescriptor( path ); + if (Files.isRegularFile(path) && !path.getFileName().toString().endsWith(".jar")) { + throw new IllegalArgumentException( + "'" + path.toString() + "' not allowed on the path, only outputDirectories and jars are accepted"); } - if ( moduleDescriptor != null ) - { - result.setModuleNameSource( ModuleNameSource.MODULEDESCRIPTOR ); + if (Files.isRegularFile(path) || Files.exists(path.resolve("module-info.class"))) { + moduleDescriptor = binaryParser.getModuleDescriptor(path); } - else - { - String moduleName = manifestModuleNameExtractor.extract( path ); - if ( moduleName != null ) - { - result.setModuleNameSource( ModuleNameSource.MANIFEST ); - } - else - { - moduleName = fileModulenameExtractor.extract( path ); - - if ( moduleName != null ) - { - result.setModuleNameSource( ModuleNameSource.FILENAME ); + if (moduleDescriptor != null) { + result.setModuleNameSource(ModuleNameSource.MODULEDESCRIPTOR); + } else { + String moduleName = manifestModuleNameExtractor.extract(path); + + if (moduleName != null) { + result.setModuleNameSource(ModuleNameSource.MANIFEST); + } else { + moduleName = fileModulenameExtractor.extract(path); + + if (moduleName != null) { + result.setModuleNameSource(ModuleNameSource.FILENAME); } } - if ( moduleName != null ) - { - moduleDescriptor = JavaModuleDescriptor.newAutomaticModule( moduleName ).build(); + if (moduleName != null) { + moduleDescriptor = + JavaModuleDescriptor.newAutomaticModule(moduleName).build(); } } - result.setModuleDescriptor( moduleDescriptor ); + result.setModuleDescriptor(moduleDescriptor); return result; } - - private void selectRequires( JavaModuleDescriptor module, - Map availableModules, - Map> availableProviders, - Set namedModules, - boolean isRootModule, - boolean includeAsTransitive, - boolean includeStatic) - { - for ( JavaModuleDescriptor.JavaRequires requires : module.requires() ) - { + + private void selectRequires( + JavaModuleDescriptor module, + Map availableModules, + Map> availableProviders, + Set namedModules, + boolean isRootModule, + boolean includeAsTransitive, + boolean includeStatic) { + for (JavaModuleDescriptor.JavaRequires requires : module.requires()) { // includeTransitive is one level deeper compared to includeStatic - if ( isRootModule - || includeStatic - || includeAsTransitive - || !requires.modifiers().contains( JavaModuleDescriptor.JavaRequires.JavaModifier.STATIC ) - || requires.modifiers().contains( JavaModuleDescriptor.JavaRequires.JavaModifier.TRANSITIVE ) ) - { - selectModule( requires.name(), availableModules, availableProviders, - namedModules, false, includeStatic, includeStatic ); + if (isRootModule + || includeStatic + || includeAsTransitive + || !requires.modifiers().contains(JavaModuleDescriptor.JavaRequires.JavaModifier.STATIC) + || requires.modifiers().contains(JavaModuleDescriptor.JavaRequires.JavaModifier.TRANSITIVE)) { + selectModule( + requires.name(), + availableModules, + availableProviders, + namedModules, + false, + includeStatic, + includeStatic); } } - - for ( String uses : module.uses() ) - { - if ( availableProviders.containsKey( uses ) ) - { - for ( String providerModule : availableProviders.get( uses ) ) - { - JavaModuleDescriptor requiredModule = availableModules.get( providerModule ); - - if ( requiredModule != null && namedModules.add( providerModule ) ) - { - selectRequires( requiredModule, availableModules, availableProviders, - namedModules, false, includeAsTransitive, includeStatic ); + + for (String uses : module.uses()) { + if (availableProviders.containsKey(uses)) { + for (String providerModule : availableProviders.get(uses)) { + JavaModuleDescriptor requiredModule = availableModules.get(providerModule); + + if (requiredModule != null && namedModules.add(providerModule)) { + selectRequires( + requiredModule, + availableModules, + availableProviders, + namedModules, + false, + includeAsTransitive, + includeStatic); } } } - } + } } - private void selectModule( String module, Map availableModules, Map> availableProviders, - Set namedModules, boolean isRootModule, boolean includeTransitive, boolean includeStatic ) - { - JavaModuleDescriptor requiredModule = availableModules.get( module ); - - if ( requiredModule != null && namedModules.add( module ) ) - { - selectRequires( requiredModule, availableModules, availableProviders, - namedModules, false, includeTransitive, includeStatic ); + private void selectModule( + String module, + Map availableModules, + Map> availableProviders, + Set namedModules, + boolean isRootModule, + boolean includeTransitive, + boolean includeStatic) { + JavaModuleDescriptor requiredModule = availableModules.get(module); + + if (requiredModule != null && namedModules.add(module)) { + selectRequires( + requiredModule, + availableModules, + availableProviders, + namedModules, + false, + includeTransitive, + includeStatic); } } - - private void collectProviders( JavaModuleDescriptor moduleDescriptor, Map> availableProviders ) - { - for ( JavaProvides provides : moduleDescriptor.provides() ) - { - // module-info.class uses FQN, i.e. $-separator for subclasses - final String serviceClassName = provides.service().replace( '$', '.' ); - - Set providingModules = availableProviders.get( serviceClassName ); - - if ( providingModules == null ) - { + + private void collectProviders(JavaModuleDescriptor moduleDescriptor, Map> availableProviders) { + for (JavaProvides provides : moduleDescriptor.provides()) { + // module-info.class uses FQN, i.e. $-separator for subclasses + final String serviceClassName = provides.service().replace('$', '.'); + + Set providingModules = availableProviders.get(serviceClassName); + + if (providingModules == null) { providingModules = new HashSet<>(); - availableProviders.put( serviceClassName, providingModules ); + availableProviders.put(serviceClassName, providingModules); } - providingModules.add( moduleDescriptor.name() ); + providingModules.add(moduleDescriptor.name()); } } } diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/MainClassModuleNameExtractor.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/MainClassModuleNameExtractor.java index 1357c03..1b0d4d0 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/MainClassModuleNameExtractor.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/MainClassModuleNameExtractor.java @@ -35,102 +35,87 @@ /** * Extract the module name by calling the main method with an external JVM - * + * * @author Robert Scholte * @since 1.0.0 */ -public class MainClassModuleNameExtractor -{ +public class MainClassModuleNameExtractor { private final Path jdkHome; - public MainClassModuleNameExtractor( Path jdkHome ) - { + public MainClassModuleNameExtractor(Path jdkHome) { this.jdkHome = jdkHome; } - public Map extract( Map files ) - throws IOException - { - Path workDir = Files.createTempDirectory( "plexus-java_jpms-" ); - - String classResourcePath = CmdModuleNameExtractor.class.getName().replace( '.', '/' ) + ".class"; + public Map extract(Map files) throws IOException { + Path workDir = Files.createTempDirectory("plexus-java_jpms-"); + + String classResourcePath = CmdModuleNameExtractor.class.getName().replace('.', '/') + ".class"; try (InputStream is = - MainClassModuleNameExtractor.class.getResourceAsStream( "/META-INF/versions/9/" + classResourcePath )) - { - if ( is==null ) - { + MainClassModuleNameExtractor.class.getResourceAsStream("/META-INF/versions/9/" + classResourcePath)) { + if (is == null) { return Collections.emptyMap(); } - Path target = workDir.resolve( classResourcePath ); + Path target = workDir.resolve(classResourcePath); - Files.createDirectories( target.getParent() ); + Files.createDirectories(target.getParent()); - Files.copy( is, target ); + Files.copy(is, target); } - try (BufferedWriter argsWriter = Files.newBufferedWriter( workDir.resolve( "args" ), Charset.defaultCharset() )) - { - argsWriter.append( "--class-path" ); + try (BufferedWriter argsWriter = Files.newBufferedWriter(workDir.resolve("args"), Charset.defaultCharset())) { + argsWriter.append("--class-path"); argsWriter.newLine(); - argsWriter.append( "." ); + argsWriter.append("."); argsWriter.newLine(); - argsWriter.append( CmdModuleNameExtractor.class.getName() ); + argsWriter.append(CmdModuleNameExtractor.class.getName()); argsWriter.newLine(); - for ( Path p : files.values() ) - { + for (Path p : files.values()) { // make sure the path is surrounded with quotes in case there is space - argsWriter.append( '"' ); + argsWriter.append('"'); // make sure to escape Windows paths - argsWriter.append( p.toAbsolutePath().toString().replace( "\\", "\\\\" ) ); - argsWriter.append( '"' ); + argsWriter.append(p.toAbsolutePath().toString().replace("\\", "\\\\")); + argsWriter.append('"'); argsWriter.newLine(); } } - ProcessBuilder builder = new ProcessBuilder( jdkHome.resolve( "bin/java" ).toAbsolutePath().toString(), - "@args" ).directory( workDir.toFile() ); + ProcessBuilder builder = new ProcessBuilder( + jdkHome.resolve("bin/java").toAbsolutePath().toString(), "@args") + .directory(workDir.toFile()); Process p = builder.start(); Properties output = new Properties(); - try (InputStream is = p.getInputStream()) - { - output.load( is ); + try (InputStream is = p.getInputStream()) { + output.load(is); } - Map moduleNames = new HashMap<>( files.size() ); - for ( Map.Entry entry : files.entrySet() ) - { - moduleNames.put( entry.getKey(), output.getProperty( entry.getValue().toAbsolutePath().toString(), null ) ); + Map moduleNames = new HashMap<>(files.size()); + for (Map.Entry entry : files.entrySet()) { + moduleNames.put( + entry.getKey(), + output.getProperty(entry.getValue().toAbsolutePath().toString(), null)); } - try - { - Files.walkFileTree( workDir, new SimpleFileVisitor() - { + try { + Files.walkFileTree(workDir, new SimpleFileVisitor() { @Override - public FileVisitResult visitFile( Path file, BasicFileAttributes attrs ) - throws IOException - { - Files.delete( file ); + public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { + Files.delete(file); return FileVisitResult.CONTINUE; } @Override - public FileVisitResult postVisitDirectory( Path dir, IOException exc ) - throws IOException - { - Files.delete( dir ); + public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException { + Files.delete(dir); return FileVisitResult.CONTINUE; } - } ); - } - catch ( IOException e ) - { + }); + } catch (IOException e) { // noop, we did our best to clean it up } diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ManifestModuleNameExtractor.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ManifestModuleNameExtractor.java index 16d0984..6c6d502 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ManifestModuleNameExtractor.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ManifestModuleNameExtractor.java @@ -29,51 +29,36 @@ /** * Extracts the name of the module by reading the Automatic-Module-Name attribute of the manifest file - * + * * @author Robert Scholte * @since 1.0.0 */ -class ManifestModuleNameExtractor implements ModuleNameExtractor -{ +class ManifestModuleNameExtractor implements ModuleNameExtractor { @Override - public String extract( Path file ) - throws IOException - { - Manifest manifest = extractManifest( file.toFile() ); - + public String extract(Path file) throws IOException { + Manifest manifest = extractManifest(file.toFile()); + String automaticModuleName; - if ( manifest != null ) - { - automaticModuleName = manifest.getMainAttributes().getValue( "Automatic-Module-Name" ); - } - else - { + if (manifest != null) { + automaticModuleName = manifest.getMainAttributes().getValue("Automatic-Module-Name"); + } else { automaticModuleName = null; } return automaticModuleName; } - - private Manifest extractManifest( File file ) - throws IOException - { + + private Manifest extractManifest(File file) throws IOException { Manifest manifest; - if ( file.isFile() ) - { - try ( JarFile jarFile = new JarFile( file ) ) - { + if (file.isFile()) { + try (JarFile jarFile = new JarFile(file)) { manifest = jarFile.getManifest(); } - } - else if ( new File( file, "META-INF/MANIFEST.MF" ).exists() ) - { - try ( InputStream is = new FileInputStream( new File( file, "META-INF/MANIFEST.MF" ) ) ) - { - manifest = new Manifest( is ); + } else if (new File(file, "META-INF/MANIFEST.MF").exists()) { + try (InputStream is = new FileInputStream(new File(file, "META-INF/MANIFEST.MF"))) { + manifest = new Manifest(is); } - } - else - { + } else { manifest = null; } diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ModuleInfoParser.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ModuleInfoParser.java index f0ed02e..5967ac8 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ModuleInfoParser.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ModuleInfoParser.java @@ -26,29 +26,27 @@ /** * Extract information from the module-info file - * + * * @author Robert Scholte * @since 1.0.0 */ -interface ModuleInfoParser -{ +interface ModuleInfoParser { /** * Extracts the name from the module-info file - * + * * @param modulePath the path to the {@code module-info.class} * @return the module descriptor * @throws IOException when the file could not be parsed */ - JavaModuleDescriptor getModuleDescriptor( Path modulePath ) throws IOException; - + JavaModuleDescriptor getModuleDescriptor(Path modulePath) throws IOException; + /** * Extracts the name from the module-info file - * + * * @param modulePath the path to the {@code module-info.class} * @param javaVersion the java version in case of a multirelease jar * @return the module descriptor * @throws IOException when the file could not be parsed */ - JavaModuleDescriptor getModuleDescriptor( Path modulePath, JavaVersion javaVersion ) - throws IOException; -} \ No newline at end of file + JavaModuleDescriptor getModuleDescriptor(Path modulePath, JavaVersion javaVersion) throws IOException; +} diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ModuleNameExtractor.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ModuleNameExtractor.java index 541f8c3..dc3327e 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ModuleNameExtractor.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ModuleNameExtractor.java @@ -22,7 +22,6 @@ import java.io.IOException; import java.nio.file.Path; -interface ModuleNameExtractor -{ - String extract( Path path ) throws IOException; +interface ModuleNameExtractor { + String extract(Path path) throws IOException; } diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ModuleNameSource.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ModuleNameSource.java index 0112299..c674b40 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ModuleNameSource.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ModuleNameSource.java @@ -19,7 +19,8 @@ * under the License. */ -public enum ModuleNameSource -{ - FILENAME, MANIFEST, MODULEDESCRIPTOR +public enum ModuleNameSource { + FILENAME, + MANIFEST, + MODULEDESCRIPTOR } diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ResolvePathRequest.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ResolvePathRequest.java index 5e0674a..afd321f 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ResolvePathRequest.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ResolvePathRequest.java @@ -24,83 +24,68 @@ import java.nio.file.Paths; /** - * + * * @author Robert Scholte * @since 1.0.0 */ -public abstract class ResolvePathRequest -{ +public abstract class ResolvePathRequest { private Path jdkHome; - + private T path; - - private ResolvePathRequest() - { - } - - public static ResolvePathRequest ofFile( File file ) - { - ResolvePathRequest request = new ResolvePathRequest() - { + + private ResolvePathRequest() {} + + public static ResolvePathRequest ofFile(File file) { + ResolvePathRequest request = new ResolvePathRequest() { @Override - protected Path toPath( File f ) - { + protected Path toPath(File f) { return f.toPath(); } }; request.path = file; return request; } - - public static ResolvePathRequest ofPath( Path path ) - { - ResolvePathRequest request = new ResolvePathRequest() - { + + public static ResolvePathRequest ofPath(Path path) { + ResolvePathRequest request = new ResolvePathRequest() { @Override - protected Path toPath( Path p ) - { + protected Path toPath(Path p) { return p; } }; request.path = path; return request; } - - public static ResolvePathRequest ofString( String string ) - { - ResolvePathRequest request = new ResolvePathRequest() - { + + public static ResolvePathRequest ofString(String string) { + ResolvePathRequest request = new ResolvePathRequest() { @Override - protected Path toPath( String s ) - { - return Paths.get( s ); + protected Path toPath(String s) { + return Paths.get(s); } }; request.path = string; return request; } - protected abstract Path toPath( T t ); - - public T getPathElement() - { + protected abstract Path toPath(T t); + + public T getPathElement() { return path; } - + /** * In case the JRE is Java 8 or before, this jdkHome is used to extract the module name. - * + * * @param jdkHome * @return this request */ - public ResolvePathRequest setJdkHome( T jdkHome ) - { - this.jdkHome = toPath( jdkHome ); + public ResolvePathRequest setJdkHome(T jdkHome) { + this.jdkHome = toPath(jdkHome); return this; } - public Path getJdkHome() - { + public Path getJdkHome() { return jdkHome; } } diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ResolvePathResult.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ResolvePathResult.java index 5651337..b312f9e 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ResolvePathResult.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ResolvePathResult.java @@ -21,39 +21,32 @@ /** * Holds the results of the location manager - * + * * @author Robert Scholte * @since 1.0.0 */ -public class ResolvePathResult -{ +public class ResolvePathResult { private JavaModuleDescriptor moduleDescriptor; - + private ModuleNameSource moduleNameSource; - - ResolvePathResult() - { - } - ResolvePathResult setModuleDescriptor( JavaModuleDescriptor moduleDescriptor ) - { + ResolvePathResult() {} + + ResolvePathResult setModuleDescriptor(JavaModuleDescriptor moduleDescriptor) { this.moduleDescriptor = moduleDescriptor; return this; } - - public JavaModuleDescriptor getModuleDescriptor() - { + + public JavaModuleDescriptor getModuleDescriptor() { return moduleDescriptor; } - - ResolvePathResult setModuleNameSource( ModuleNameSource moduleNameSource ) - { + + ResolvePathResult setModuleNameSource(ModuleNameSource moduleNameSource) { this.moduleNameSource = moduleNameSource; return this; } - - public ModuleNameSource getModuleNameSource() - { + + public ModuleNameSource getModuleNameSource() { return moduleNameSource; } } diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ResolvePathsRequest.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ResolvePathsRequest.java index 66ad59f..60b9f78 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ResolvePathsRequest.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ResolvePathsRequest.java @@ -28,12 +28,11 @@ /** * Contains all information required to analyze the project - * + * * @author Robert Scholte * @since 1.0.0 */ -public abstract class ResolvePathsRequest -{ +public abstract class ResolvePathsRequest { private Path jdkHome; private Path mainModuleDescriptor; @@ -41,38 +40,31 @@ public abstract class ResolvePathsRequest private Collection pathElements; private Collection additionalModules; - + private boolean includeAllProviders; private JavaModuleDescriptor resolvedMainModuleDescriptor; private boolean includeStatic; - private ResolvePathsRequest() - { - } + private ResolvePathsRequest() {} /** * @deprecated use {@link #ofFiles(Collection)} instead */ @Deprecated - public static ResolvePathsRequest withFiles( Collection files ) - { - return ofFiles( files ); + public static ResolvePathsRequest withFiles(Collection files) { + return ofFiles(files); } - - public static ResolvePathsRequest ofFiles( File... files ) - { - return ofFiles( Arrays.asList( files ) ); + + public static ResolvePathsRequest ofFiles(File... files) { + return ofFiles(Arrays.asList(files)); } - - public static ResolvePathsRequest ofFiles( Collection files ) - { - ResolvePathsRequest request = new ResolvePathsRequest() - { + + public static ResolvePathsRequest ofFiles(Collection files) { + ResolvePathsRequest request = new ResolvePathsRequest() { @Override - protected Path toPath( File t ) - { + protected Path toPath(File t) { return t.toPath(); } }; @@ -85,22 +77,18 @@ protected Path toPath( File t ) * @deprecated use {@link #ofPaths(Collection)} instead */ @Deprecated - public static ResolvePathsRequest withPaths( Collection paths ) - { - return ofPaths( paths ); + public static ResolvePathsRequest withPaths(Collection paths) { + return ofPaths(paths); } - - public static ResolvePathsRequest ofPaths( Path... paths ) - { - return ofPaths( Arrays.asList( paths ) ); + + public static ResolvePathsRequest ofPaths(Path... paths) { + return ofPaths(Arrays.asList(paths)); } - - public static ResolvePathsRequest ofPaths( Collection paths ) - { + + public static ResolvePathsRequest ofPaths(Collection paths) { ResolvePathsRequest request = new ResolvePathsRequest() { @Override - protected Path toPath( Path t ) - { + protected Path toPath(Path t) { return t; } }; @@ -112,126 +100,110 @@ protected Path toPath( Path t ) * @deprecated use {@link #ofStrings(Collection)} instead */ @Deprecated - public static ResolvePathsRequest withStrings( Collection strings ) - { - return ofStrings( strings ); + public static ResolvePathsRequest withStrings(Collection strings) { + return ofStrings(strings); } - - public static ResolvePathsRequest ofStrings( String... strings ) - { - return ofStrings( Arrays.asList( strings ) ); + + public static ResolvePathsRequest ofStrings(String... strings) { + return ofStrings(Arrays.asList(strings)); } - - public static ResolvePathsRequest ofStrings( Collection strings ) - { + + public static ResolvePathsRequest ofStrings(Collection strings) { ResolvePathsRequest request = new ResolvePathsRequest() { @Override - protected Path toPath( String t ) - { - return Paths.get( t ); + protected Path toPath(String t) { + return Paths.get(t); } }; request.pathElements = strings; return request; } - protected abstract Path toPath( T t ); + protected abstract Path toPath(T t); final ResolvePathsResult createResult() { return new ResolvePathsResult<>(); } - public Path getMainModuleDescriptor() - { + public Path getMainModuleDescriptor() { return mainModuleDescriptor; } - public JavaModuleDescriptor getModuleDescriptor() - { + public JavaModuleDescriptor getModuleDescriptor() { return resolvedMainModuleDescriptor; } - + /** - * Must be either {@code module-info.java} or {@code module-info.class} - * + * Must be either {@code module-info.java} or {@code module-info.class} + * * @param mainModuleDescriptor * @return this request */ - public ResolvePathsRequest setMainModuleDescriptor( T mainModuleDescriptor ) - { - this.mainModuleDescriptor = toPath( mainModuleDescriptor ); + public ResolvePathsRequest setMainModuleDescriptor(T mainModuleDescriptor) { + this.mainModuleDescriptor = toPath(mainModuleDescriptor); return this; } /*** * Provide a resolved module descriptor - * + * * @param mainModuleDescriptor * @return this request */ - public ResolvePathsRequest setModuleDescriptor( JavaModuleDescriptor mainModuleDescriptor ) - { + public ResolvePathsRequest setModuleDescriptor(JavaModuleDescriptor mainModuleDescriptor) { this.resolvedMainModuleDescriptor = mainModuleDescriptor; return this; } - public Collection getPathElements() - { + public Collection getPathElements() { return pathElements; } /** * In case the JRE is Java 8 or before, this jdkHome is used to extract the module name. - * + * * @param jdkHome * @return this request */ - public ResolvePathsRequest setJdkHome( T jdkHome ) - { - this.jdkHome = toPath( jdkHome ); + public ResolvePathsRequest setJdkHome(T jdkHome) { + this.jdkHome = toPath(jdkHome); return this; } - public Path getJdkHome() - { + public Path getJdkHome() { return jdkHome; } /** * The module names that are usually passed with {@code --add-modules} - * + * * @param additionalModules * @return this request */ - public ResolvePathsRequest setAdditionalModules( Collection additionalModules ) - { + public ResolvePathsRequest setAdditionalModules(Collection additionalModules) { this.additionalModules = additionalModules; return this; } - public Collection getAdditionalModules() - { - if ( additionalModules == null ) - { + public Collection getAdditionalModules() { + if (additionalModules == null) { additionalModules = Collections.emptyList(); } return additionalModules; } - + /** * Will also include all modules that contain providers for used services, should only be used at runtime (not during compile nor test) - * + * * @param includeAllProviders * @return this request */ - public ResolvePathsRequest setIncludeAllProviders( boolean includeAllProviders ) - { + public ResolvePathsRequest setIncludeAllProviders(boolean includeAllProviders) { this.includeAllProviders = includeAllProviders; return this; } - - public boolean isIncludeAllProviders() - { + + public boolean isIncludeAllProviders() { return includeAllProviders; } @@ -240,8 +212,7 @@ public boolean isIncludeAllProviders() * @return true if the result will include all static dependencies * @since 1.0.5 */ - public boolean isIncludeStatic() - { + public boolean isIncludeStatic() { return includeStatic; } @@ -251,8 +222,7 @@ public boolean isIncludeStatic() * @return this request * @since 1.0.5 */ - public ResolvePathsRequest setIncludeStatic( boolean includeStatic ) - { + public ResolvePathsRequest setIncludeStatic(boolean includeStatic) { this.includeStatic = includeStatic; return this; } diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ResolvePathsResult.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ResolvePathsResult.java index a5fc834..753c4be 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ResolvePathsResult.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ResolvePathsResult.java @@ -27,110 +27,98 @@ /** * Holds the results of the project analyzer - * + * * @author Robert Scholte * @since 1.0.0 */ -public class ResolvePathsResult -{ +public class ResolvePathsResult { private JavaModuleDescriptor mainModuleDescriptor; - + /** * Ordered map, respects the classpath order */ private Map pathElements; - + private Map modulepathElements = new LinkedHashMap<>(); - + private Collection classpathElements = new ArrayList<>(); - + private Map pathExceptions = new HashMap<>(); - void setMainModuleDescriptor( JavaModuleDescriptor mainModuleDescriptor ) - { + void setMainModuleDescriptor(JavaModuleDescriptor mainModuleDescriptor) { this.mainModuleDescriptor = mainModuleDescriptor; } /** - * The resolved main module descriptor - * - * @return the resolved descriptor + * The resolved main module descriptor + * + * @return the resolved descriptor * @see ResolvePathsRequest#setMainModuleDescriptor(Object) */ - public JavaModuleDescriptor getMainModuleDescriptor() - { + public JavaModuleDescriptor getMainModuleDescriptor() { return mainModuleDescriptor; } - void setPathElements( Map pathElements ) - { + void setPathElements(Map pathElements) { this.pathElements = pathElements; } - + /** * Ordered map, respects the classpath order */ - public Map getPathElements() - { + public Map getPathElements() { return pathElements; } - - void setClasspathElements( Collection classpathElements ) - { + + void setClasspathElements(Collection classpathElements) { this.classpathElements = classpathElements; } - + /** * All T that belong to the classpath based on the module descriptor - * + * * @return the classpath elements, never {@code null} * @see #getPathElements() */ - public Collection getClasspathElements() - { + public Collection getClasspathElements() { return classpathElements; } - - void setModulepathElements( Map modulepathElements ) - { + + void setModulepathElements(Map modulepathElements) { this.modulepathElements = modulepathElements; } - + /** * All T that belong to the modulepath, based on the module descriptor. - * For every T the source for the module name is added. - * - * @return all modulepath elements, never {@code null} + * For every T the source for the module name is added. + * + * @return all modulepath elements, never {@code null} * @see #getPathElements() */ - public Map getModulepathElements() - { + public Map getModulepathElements() { return modulepathElements; } - void setPathExceptions( Map pathExceptions ) - { + void setPathExceptions(Map pathExceptions) { this.pathExceptions = pathExceptions; } /** * Map containing exceptions for every T which modulename resolution failed - * + * * @return the exceptions for every T, never {@code null} */ - public Map getPathExceptions() - { + public Map getPathExceptions() { return pathExceptions; } @Override public String toString() { - return "ResolvePathsResult{" + System.lineSeparator() + - "mainModuleDescriptor=" + mainModuleDescriptor + System.lineSeparator() + - ", pathElements=" + pathElements + System.lineSeparator() + - ", modulepathElements=" + modulepathElements + System.lineSeparator() + - ", classpathElements=" + classpathElements + System.lineSeparator() + - ", pathExceptions=" + pathExceptions + System.lineSeparator() + - '}'; + return "ResolvePathsResult{" + System.lineSeparator() + "mainModuleDescriptor=" + + mainModuleDescriptor + System.lineSeparator() + ", pathElements=" + + pathElements + System.lineSeparator() + ", modulepathElements=" + + modulepathElements + System.lineSeparator() + ", classpathElements=" + + classpathElements + System.lineSeparator() + ", pathExceptions=" + + pathExceptions + System.lineSeparator() + '}'; } } diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/SourceModuleInfoParser.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/SourceModuleInfoParser.java index 40258f7..b484919 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/SourceModuleInfoParser.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/SourceModuleInfoParser.java @@ -34,86 +34,72 @@ /** * Extract information from module with QDox - * + * * @author Robert Scholte * @since 1.0.0 */ -class SourceModuleInfoParser -{ +class SourceModuleInfoParser { - public org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor fromSourcePath( Path modulePath ) - throws IOException - { + public org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor fromSourcePath(Path modulePath) + throws IOException { File moduleDescriptor = modulePath.toFile(); org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor.Builder builder; - if ( moduleDescriptor.exists() ) - { - JavaModuleDescriptor descriptor = new JavaProjectBuilder().addSourceFolder( moduleDescriptor.getParentFile() ).getDescriptor(); + if (moduleDescriptor.exists()) { + JavaModuleDescriptor descriptor = new JavaProjectBuilder() + .addSourceFolder(moduleDescriptor.getParentFile()) + .getDescriptor(); + + builder = org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor.newModule(descriptor.getName()); - builder = org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor.newModule( descriptor.getName() ); - - for ( JavaModuleDescriptor.JavaRequires requires : descriptor.getRequires() ) - { - if ( requires.isStatic() || requires.isTransitive() ) - { - Set modifiers = - new LinkedHashSet<>( 2 ); - if ( requires.isStatic() ) - { - modifiers.add( org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor.JavaRequires.JavaModifier.STATIC ); + for (JavaModuleDescriptor.JavaRequires requires : descriptor.getRequires()) { + if (requires.isStatic() || requires.isTransitive()) { + Set + modifiers = new LinkedHashSet<>(2); + if (requires.isStatic()) { + modifiers.add( + org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor.JavaRequires.JavaModifier + .STATIC); } - if ( requires.isTransitive() ) - { - modifiers.add( org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor.JavaRequires.JavaModifier.TRANSITIVE ); + if (requires.isTransitive()) { + modifiers.add( + org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor.JavaRequires.JavaModifier + .TRANSITIVE); } - builder.requires( modifiers , requires.getModule().getName() ); - } - else - { - builder.requires( requires.getModule().getName() ); + builder.requires(modifiers, requires.getModule().getName()); + } else { + builder.requires(requires.getModule().getName()); } } - - for ( JavaModuleDescriptor.JavaExports exports : descriptor.getExports() ) - { - if ( exports.getTargets().isEmpty() ) - { - builder.exports( exports.getSource().getName() ); - } - else - { + + for (JavaModuleDescriptor.JavaExports exports : descriptor.getExports()) { + if (exports.getTargets().isEmpty()) { + builder.exports(exports.getSource().getName()); + } else { Set targets = new LinkedHashSet<>(); - for ( JavaModule module : exports.getTargets() ) - { - targets.add( module.getName() ); + for (JavaModule module : exports.getTargets()) { + targets.add(module.getName()); } - builder.exports( exports.getSource().getName(), targets ); + builder.exports(exports.getSource().getName(), targets); } } - - for ( JavaModuleDescriptor.JavaUses uses : descriptor.getUses() ) - { - builder.uses( uses.getService().getName() ); + + for (JavaModuleDescriptor.JavaUses uses : descriptor.getUses()) { + builder.uses(uses.getService().getName()); } - - for ( JavaModuleDescriptor.JavaProvides provides : descriptor.getProvides() ) - { - List providers = new ArrayList<>( provides.getProviders().size() ); - for ( JavaClass provider : provides.getProviders() ) - { - providers.add( provider.getName() ); + + for (JavaModuleDescriptor.JavaProvides provides : descriptor.getProvides()) { + List providers = new ArrayList<>(provides.getProviders().size()); + for (JavaClass provider : provides.getProviders()) { + providers.add(provider.getName()); } - - builder.provides( provides.getService().getName(), providers ); + + builder.provides(provides.getService().getName(), providers); } - } - else - { - builder = org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor.newAutomaticModule( null ); + } else { + builder = org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor.newAutomaticModule(null); } return builder.build(); } - } diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/package-info.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/package-info.java index accd0eb..eb2ed35 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/package-info.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/package-info.java @@ -17,4 +17,4 @@ * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. - */ \ No newline at end of file + */ diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/version/JavaVersion.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/version/JavaVersion.java index f39d840..b80e7cc 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/version/JavaVersion.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/version/JavaVersion.java @@ -27,191 +27,164 @@ /** * @author Robert Scholte * @since 1.0.0 - * + * * @see Java SE Naming and Versions * @see JEP 223: New Version-String Scheme * @see JEP 322: Time-Based Release Versioning */ -public class JavaVersion implements Comparable -{ +public class JavaVersion implements Comparable { /** * Represents the System property {@code java.specification.version} */ - public static final JavaVersion JAVA_SPECIFICATION_VERSION = parse( System.getProperty( "java.specification.version" ) ); + public static final JavaVersion JAVA_SPECIFICATION_VERSION = + parse(System.getProperty("java.specification.version")); /** * Represents the System property {@code java.version} */ - public static final JavaVersion JAVA_VERSION = parse( System.getProperty( "java.version" ) ); - - private static final Pattern startingDigits = Pattern.compile( "(\\d+)(.*)" ); - + public static final JavaVersion JAVA_VERSION = parse(System.getProperty("java.version")); + + private static final Pattern startingDigits = Pattern.compile("(\\d+)(.*)"); + private final String rawVersion; - - private final boolean isMajor; - private JavaVersion( String rawVersion, boolean isMajor ) - { + private final boolean isMajor; + + private JavaVersion(String rawVersion, boolean isMajor) { this.rawVersion = rawVersion; this.isMajor = isMajor; } /** * Lazy parse the version-scheme. - * Actual parsing is done when calling {@link #compareTo(JavaVersion)} - * + * Actual parsing is done when calling {@link #compareTo(JavaVersion)} + * * @param s the version string, never {@code null} * @return the version wrapped in a JavadocVersion */ - public static JavaVersion parse( String s ) - { - return new JavaVersion( s, !s.startsWith( "1." ) ); + public static JavaVersion parse(String s) { + return new JavaVersion(s, !s.startsWith("1.")); } @Override - public int compareTo( JavaVersion other ) - { - String[] thisSegments = this.rawVersion.split( "\\." ); - String[] otherSegments = other.rawVersion.split( "\\." ); - - int minSegments = Math.min( thisSegments.length, otherSegments.length ); - - for ( int index = 0; index < minSegments; index++ ) - { - Matcher thisMatcher = startingDigits.matcher( thisSegments[index] ); - + public int compareTo(JavaVersion other) { + String[] thisSegments = this.rawVersion.split("\\."); + String[] otherSegments = other.rawVersion.split("\\."); + + int minSegments = Math.min(thisSegments.length, otherSegments.length); + + for (int index = 0; index < minSegments; index++) { + Matcher thisMatcher = startingDigits.matcher(thisSegments[index]); + int thisValue; - - if( thisMatcher.find() ) - { - thisValue = Integer.parseInt( thisMatcher.group( 1 ) ); - } - else - { + + if (thisMatcher.find()) { + thisValue = Integer.parseInt(thisMatcher.group(1)); + } else { thisValue = -1; } - - Matcher otherMatcher = startingDigits.matcher( otherSegments[index] ); - + + Matcher otherMatcher = startingDigits.matcher(otherSegments[index]); + int otherValue; - - if( otherMatcher.find() ) - { - otherValue = Integer.parseInt( otherMatcher.group( 1 ) ); - } - else - { + + if (otherMatcher.find()) { + otherValue = Integer.parseInt(otherMatcher.group(1)); + } else { otherValue = -1; } - - int compareValue = Integer.compare( thisValue, otherValue ); - - if ( compareValue != 0 ) - { + + int compareValue = Integer.compare(thisValue, otherValue); + + if (compareValue != 0) { return compareValue; } - compareValue = suffixRate( thisMatcher.group( 2 ) ) - suffixRate( otherMatcher.group( 2 ) ); - if ( compareValue != 0 ) - { + compareValue = suffixRate(thisMatcher.group(2)) - suffixRate(otherMatcher.group(2)); + if (compareValue != 0) { return compareValue; } - + // works for now, but needs improvement - compareValue = thisMatcher.group( 2 ).compareTo( otherMatcher.group( 2 ) ); - - if ( compareValue != 0 ) - { + compareValue = thisMatcher.group(2).compareTo(otherMatcher.group(2)); + + if (compareValue != 0) { return compareValue; } } - - return ( thisSegments.length - otherSegments.length ); + + return (thisSegments.length - otherSegments.length); } - - private int suffixRate( String suffix ) { - if ( "-ea".equals( suffix ) ) - { + + private int suffixRate(String suffix) { + if ("-ea".equals(suffix)) { return -100; - } - else if ( "".equals( suffix ) ) - { + } else if ("".equals(suffix)) { return 0; - } - else - { + } else { return 10; } } /** * Verify if this version is before some other version - * + * * @param other the version to compare with * @return {@code true} is this is less than {@code other}, otherwise {@code false} */ - public boolean isBefore( JavaVersion other ) - { - return this.compareTo( other ) < 0; + public boolean isBefore(JavaVersion other) { + return this.compareTo(other) < 0; } /** * Verify if this version is before some other version - * + * * @param other the version to compare with * @return {@code true} is this is less than {@code other}, otherwise {@code false} */ - public boolean isBefore( String other ) - { - return this.compareTo( parse( other ) ) < 0; + public boolean isBefore(String other) { + return this.compareTo(parse(other)) < 0; } /** * Verify if this version is at least some other version - * + * * @param other the version to compare with * @return {@code true} is this is greater than or equal to {@code other}, otherwise {@code false} */ - public boolean isAtLeast( JavaVersion other ) - { - return this.compareTo( other ) >= 0; + public boolean isAtLeast(JavaVersion other) { + return this.compareTo(other) >= 0; } /** * Verify if this version is at least some other version - * + * * @param other the version to compare with * @return {@code true} is this is greater than or equal to {@code other}, otherwise {@code false} */ - public boolean isAtLeast( String other ) - { - return this.compareTo( parse( other ) ) >= 0; + public boolean isAtLeast(String other) { + return this.compareTo(parse(other)) >= 0; } - + /** * If original version starts with {@code "1."}, then remove this part from the version - * + * * @return a new JavaVersion if version has to be changed, otherwise return itself */ - public JavaVersion asMajor() - { - if ( !isMajor ) - { - return new JavaVersion( rawVersion.substring( 2 ), true ); - } - else - { + public JavaVersion asMajor() { + if (!isMajor) { + return new JavaVersion(rawVersion.substring(2), true); + } else { return this; } } - + /** * Returns the original version - * + * * @return the raw version */ - public String getValue() - { + public String getValue() { return rawVersion; } @@ -219,90 +192,72 @@ public String getValue() * Returns a value respecting the nuber of groups.
* If the original has more groups, the end of that value will be removed.
* If the original has less groups, the value will be extended this ".0".
- * + * *
-     *   JavaVersion.parse( "1" ).getValue( 1 )   is "1" 
-     *   JavaVersion.parse( "1" ).getValue( 2 )   is "1.0" 
-     *   JavaVersion.parse( "2.1" ).getValue( 1 ) is "2" 
-     *   JavaVersion.parse( "2.1" ).getValue( 2 ) is "2.1" 
+     *   JavaVersion.parse( "1" ).getValue( 1 )   is "1"
+     *   JavaVersion.parse( "1" ).getValue( 2 )   is "1.0"
+     *   JavaVersion.parse( "2.1" ).getValue( 1 ) is "2"
+     *   JavaVersion.parse( "2.1" ).getValue( 2 ) is "2.1"
      * 
- * + * * @param groups number of groups to return * @return the version respecting the number of groups */ - public String getValue( int groups ) - { + public String getValue(int groups) { StringBuilder value = new StringBuilder(); - StringTokenizer tokenizer = new StringTokenizer( rawVersion, "." ); - - value.append( tokenizer.nextToken() ); - for ( int group = 1 ; group < groups ; group++ ) - { - value.append( '.' ); - if( tokenizer.hasMoreTokens() ) - { - value.append( tokenizer.nextToken() ); - } - else - { - value.append( "0" ); + StringTokenizer tokenizer = new StringTokenizer(rawVersion, "."); + + value.append(tokenizer.nextToken()); + for (int group = 1; group < groups; group++) { + value.append('.'); + if (tokenizer.hasMoreTokens()) { + value.append(tokenizer.nextToken()); + } else { + value.append("0"); } } return value.toString(); } @Override - public String toString() - { + public String toString() { return rawVersion; } @Override - public int hashCode() - { - return Objects.hashCode( rawVersion ); + public int hashCode() { + return Objects.hashCode(rawVersion); } @Override - public boolean equals( Object obj ) - { - if ( this == obj ) - { + public boolean equals(Object obj) { + if (this == obj) { return true; } - if ( obj == null ) - { + if (obj == null) { return false; } - if ( getClass() != obj.getClass() ) - { + if (getClass() != obj.getClass()) { return false; } - + JavaVersion other = (JavaVersion) obj; - if ( isMajor != other.isMajor ) - { + if (isMajor != other.isMajor) { final String thisOneDotVersion; final String otherOneDotVersion; - if ( isMajor ) - { + if (isMajor) { thisOneDotVersion = "1." + rawVersion; otherOneDotVersion = other.rawVersion; - } - else - { + } else { thisOneDotVersion = rawVersion; otherOneDotVersion = "1." + other.rawVersion; } - - if ( !Objects.equals( thisOneDotVersion, otherOneDotVersion ) ) - { - return false; - } - } - else if ( !Objects.equals( rawVersion, other.rawVersion ) ) - { + + if (!Objects.equals(thisOneDotVersion, otherOneDotVersion)) { return false; + } + } else if (!Objects.equals(rawVersion, other.rawVersion)) { + return false; } return true; } diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/AbstractFilenameModuleNameExtractorTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/AbstractFilenameModuleNameExtractorTest.java index 96e0307..1db8b8c 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/AbstractFilenameModuleNameExtractorTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/AbstractFilenameModuleNameExtractorTest.java @@ -19,52 +19,47 @@ * under the License. */ -import static org.hamcrest.CoreMatchers.not; -import static org.hamcrest.CoreMatchers.startsWith; -import static org.junit.Assert.assertEquals; -import static org.junit.Assume.assumeThat; - import java.nio.file.Paths; import org.junit.BeforeClass; import org.junit.Test; -public abstract class AbstractFilenameModuleNameExtractorTest -{ +import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.CoreMatchers.startsWith; +import static org.junit.Assert.assertEquals; +import static org.junit.Assume.assumeThat; + +public abstract class AbstractFilenameModuleNameExtractorTest { protected abstract ModuleNameExtractor getExtractor(); @BeforeClass - public static void assume() - { - assumeThat( "Requires at least Java 9", System.getProperty( "java.version" ), not( startsWith( "1." ) ) ); + public static void assume() { + assumeThat("Requires at least Java 9", System.getProperty("java.version"), not(startsWith("1."))); } - + @Test - public void testJarWithoutManifest() throws Exception - { - String name = getExtractor().extract( Paths.get( "src/test/resources/jar.empty/plexus-java-1.0.0-SNAPSHOT.jar" ) ); - assertEquals( "plexus.java", name ); + public void testJarWithoutManifest() throws Exception { + String name = getExtractor().extract(Paths.get("src/test/resources/jar.empty/plexus-java-1.0.0-SNAPSHOT.jar")); + assertEquals("plexus.java", name); } @Test - public void testJarWithManifest() throws Exception - { - String name = getExtractor().extract( Paths.get( "src/test/resources/jar.manifest.with/plexus-java-1.0.0-SNAPSHOT.jar" ) ); - assertEquals( "org.codehaus.plexus.languages.java", name ); + public void testJarWithManifest() throws Exception { + String name = getExtractor() + .extract(Paths.get("src/test/resources/jar.manifest.with/plexus-java-1.0.0-SNAPSHOT.jar")); + assertEquals("org.codehaus.plexus.languages.java", name); } - + @Test - public void testJarUnsupported() throws Exception - { - String name = getExtractor().extract( Paths.get( "src/test/resources/jar.unsupported/jdom-1.0.jar" ) ); - assertEquals( null, name ); + public void testJarUnsupported() throws Exception { + String name = getExtractor().extract(Paths.get("src/test/resources/jar.unsupported/jdom-1.0.jar")); + assertEquals(null, name); } @Test - public void testJarWithSpacesInPath() throws Exception - { - String name = getExtractor().extract( Paths.get( "src/test/resources/jar with spaces in path/plexus-java-1.0.0-SNAPSHOT.jar" ) ); - assertEquals( "org.codehaus.plexus.languages.java", name ); + public void testJarWithSpacesInPath() throws Exception { + String name = getExtractor() + .extract(Paths.get("src/test/resources/jar with spaces in path/plexus-java-1.0.0-SNAPSHOT.jar")); + assertEquals("org.codehaus.plexus.languages.java", name); } - } diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/BinaryModuleInfoParserTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/BinaryModuleInfoParserTest.java index 963b508..f7aa257 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/BinaryModuleInfoParserTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/BinaryModuleInfoParserTest.java @@ -1,6 +1,5 @@ package org.codehaus.plexus.languages.java.jpms; - /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file @@ -20,13 +19,6 @@ * under the License. */ -import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; - import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; @@ -43,162 +35,174 @@ import org.codehaus.plexus.languages.java.version.JavaVersion; import org.junit.Test; -public class BinaryModuleInfoParserTest -{ +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +public class BinaryModuleInfoParserTest { private BinaryModuleInfoParser parser = new BinaryModuleInfoParser(); @Test - public void testJarDescriptor() throws Exception - { - JavaModuleDescriptor descriptor = parser.getModuleDescriptor( Paths.get( "src/test/resources/jar.descriptor/asm-6.0_BETA.jar" ) ); - - assertNotNull( descriptor); - assertEquals( "org.objectweb.asm", descriptor.name() ); - assertEquals( false, descriptor.isAutomatic() ); - - assertEquals( 1, descriptor.requires().size() ); - assertEquals( "java.base", descriptor.requires().iterator().next().name() ); - - Set expectedExports = JavaModuleDescriptor.newAutomaticModule( "_" ) - .exports( "org.objectweb.asm" ) - .exports( "org.objectweb.asm.signature" ) + public void testJarDescriptor() throws Exception { + JavaModuleDescriptor descriptor = + parser.getModuleDescriptor(Paths.get("src/test/resources/jar.descriptor/asm-6.0_BETA.jar")); + + assertNotNull(descriptor); + assertEquals("org.objectweb.asm", descriptor.name()); + assertEquals(false, descriptor.isAutomatic()); + + assertEquals(1, descriptor.requires().size()); + assertEquals("java.base", descriptor.requires().iterator().next().name()); + + Set expectedExports = JavaModuleDescriptor.newAutomaticModule("_") + .exports("org.objectweb.asm") + .exports("org.objectweb.asm.signature") .build() .exports(); - assertEquals( expectedExports, descriptor.exports() ); + assertEquals(expectedExports, descriptor.exports()); } @Test - public void testMultiReleaseJarDescriptor() throws Exception - { - JavaModuleDescriptor descriptor = parser.getModuleDescriptor( Paths.get( "src/test/resources/jar.mr.descriptor/jloadr-1.0-SNAPSHOT.jar" ), JavaVersion.parse( "17" ) ); - - assertNotNull( descriptor); - assertEquals( "de.adito.jloadr", descriptor.name() ); - assertEquals( false, descriptor.isAutomatic() ); + public void testMultiReleaseJarDescriptor() throws Exception { + JavaModuleDescriptor descriptor = parser.getModuleDescriptor( + Paths.get("src/test/resources/jar.mr.descriptor/jloadr-1.0-SNAPSHOT.jar"), JavaVersion.parse("17")); + + assertNotNull(descriptor); + assertEquals("de.adito.jloadr", descriptor.name()); + assertEquals(false, descriptor.isAutomatic()); } @Test - public void testIncompleteMultiReleaseJarDescriptor() throws Exception - { + public void testIncompleteMultiReleaseJarDescriptor() throws Exception { // this jar is missing the Multi-Release: true entry in the Manifest - JavaModuleDescriptor descriptor = parser.getModuleDescriptor( Paths.get( "src/test/resources/jar.mr.incomplete.descriptor/jloadr-1.0-SNAPSHOT.jar" ) ); - - assertNull( descriptor); + JavaModuleDescriptor descriptor = parser.getModuleDescriptor( + Paths.get("src/test/resources/jar.mr.incomplete.descriptor/jloadr-1.0-SNAPSHOT.jar")); + + assertNull(descriptor); } @Test - public void testClassicJar() throws Exception - { - JavaModuleDescriptor descriptor = parser.getModuleDescriptor( Paths.get( "src/test/resources/jar.empty/plexus-java-1.0.0-SNAPSHOT.jar" ) ); - - assertNull( descriptor); + public void testClassicJar() throws Exception { + JavaModuleDescriptor descriptor = + parser.getModuleDescriptor(Paths.get("src/test/resources/jar.empty/plexus-java-1.0.0-SNAPSHOT.jar")); + + assertNull(descriptor); } - + @Test - public void testOutputDirectoryDescriptor() - throws Exception - { + public void testOutputDirectoryDescriptor() throws Exception { JavaModuleDescriptor descriptor = - parser.getModuleDescriptor( Paths.get( "src/test/resources/dir.descriptor/out" ) ); + parser.getModuleDescriptor(Paths.get("src/test/resources/dir.descriptor/out")); - assertNotNull( descriptor ); - assertEquals( "org.codehaus.plexus.languages.java.demo", descriptor.name() ); - assertEquals( false, descriptor.isAutomatic() ); + assertNotNull(descriptor); + assertEquals("org.codehaus.plexus.languages.java.demo", descriptor.name()); + assertEquals(false, descriptor.isAutomatic()); - assertEquals( 3, descriptor.requires().size() ); + assertEquals(3, descriptor.requires().size()); - Set expectedRequires = JavaModuleDescriptor.newAutomaticModule( "_" ) - .requires( "java.base" ) - .requires( "java.xml" ) - .requires( Collections.singleton( JavaRequires.JavaModifier.STATIC ), "com.google.common" ) - .build() - .requires(); + Set expectedRequires = JavaModuleDescriptor.newAutomaticModule("_") + .requires("java.base") + .requires("java.xml") + .requires(Collections.singleton(JavaRequires.JavaModifier.STATIC), "com.google.common") + .build() + .requires(); - assertEquals( expectedRequires, descriptor.requires() ); + assertEquals(expectedRequires, descriptor.requires()); } - @Test( expected = NoSuchFileException.class ) - public void testClassicOutputDirectory() throws Exception - { - parser.getModuleDescriptor( Paths.get( "src/test/resources/dir.empty/out" ) ); + @Test(expected = NoSuchFileException.class) + public void testClassicOutputDirectory() throws Exception { + parser.getModuleDescriptor(Paths.get("src/test/resources/dir.empty/out")); } @Test - public void testJModDescriptor() throws Exception - { - JavaModuleDescriptor descriptor = parser.getModuleDescriptor( Paths.get( "src/test/resources/jmod.descriptor/first-jmod-1.0-SNAPSHOT.jmod" ) ); - - assertNotNull( descriptor); - assertEquals( "com.corporate.project", descriptor.name() ); - assertEquals( false, descriptor.isAutomatic() ); - - assertEquals( 1, descriptor.requires().size() ); - assertEquals( "java.base", descriptor.requires().iterator().next().name() ); - - assertEquals ( 1, descriptor.exports().size() ); - assertEquals ( "com.corporate.project", descriptor.exports().iterator().next().source() ); + public void testJModDescriptor() throws Exception { + JavaModuleDescriptor descriptor = parser.getModuleDescriptor( + Paths.get("src/test/resources/jmod.descriptor/first-jmod-1.0-SNAPSHOT.jmod")); + + assertNotNull(descriptor); + assertEquals("com.corporate.project", descriptor.name()); + assertEquals(false, descriptor.isAutomatic()); + + assertEquals(1, descriptor.requires().size()); + assertEquals("java.base", descriptor.requires().iterator().next().name()); + + assertEquals(1, descriptor.exports().size()); + assertEquals( + "com.corporate.project", descriptor.exports().iterator().next().source()); } - - @Test( expected = IOException.class ) - public void testInvalidFile() throws Exception - { - parser.getModuleDescriptor( Paths.get( "src/test/resources/nonjar/pom.xml" ) ); + + @Test(expected = IOException.class) + public void testInvalidFile() throws Exception { + parser.getModuleDescriptor(Paths.get("src/test/resources/nonjar/pom.xml")); } - + @Test - public void testUses() throws Exception - { - try ( InputStream is = Files.newInputStream( Paths.get( "src/test/resources/dir.descriptor.uses/out/module-info.class" ) ) ) - { - JavaModuleDescriptor descriptor = parser.parse( is ); - - assertNotNull( descriptor); - assertEquals( new HashSet<>( Arrays.asList( "org.apache.logging.log4j.spi.Provider", - "org.apache.logging.log4j.util.PropertySource", - "org.apache.logging.log4j.message.ThreadDumpMessage$ThreadInfoFactory" ) ), - descriptor.uses() ); + public void testUses() throws Exception { + try (InputStream is = + Files.newInputStream(Paths.get("src/test/resources/dir.descriptor.uses/out/module-info.class"))) { + JavaModuleDescriptor descriptor = parser.parse(is); + + assertNotNull(descriptor); + assertEquals( + new HashSet<>(Arrays.asList( + "org.apache.logging.log4j.spi.Provider", + "org.apache.logging.log4j.util.PropertySource", + "org.apache.logging.log4j.message.ThreadDumpMessage$ThreadInfoFactory")), + descriptor.uses()); } } - + @Test - public void testProvides() throws Exception - { - JavaModuleDescriptor descriptor = parser.getModuleDescriptor( Paths.get( "src/test/resources/jar.service/threeten-extra-1.4.jar" ) ); - - assertNotNull( descriptor ); - assertEquals( 1, descriptor.provides().size() ); - - JavaProvides provides = descriptor.provides().iterator().next(); - assertEquals( "java.time.chrono.Chronology", provides.service() ); - assertArrayEquals( new String[] { "org.threeten.extra.chrono.BritishCutoverChronology", - "org.threeten.extra.chrono.CopticChronology", "org.threeten.extra.chrono.DiscordianChronology", - "org.threeten.extra.chrono.EthiopicChronology", "org.threeten.extra.chrono.InternationalFixedChronology", - "org.threeten.extra.chrono.JulianChronology", "org.threeten.extra.chrono.PaxChronology", - "org.threeten.extra.chrono.Symmetry010Chronology", "org.threeten.extra.chrono.Symmetry454Chronology" }, - provides.providers().toArray( new String[0] ) ); + public void testProvides() throws Exception { + JavaModuleDescriptor descriptor = + parser.getModuleDescriptor(Paths.get("src/test/resources/jar.service/threeten-extra-1.4.jar")); + assertNotNull(descriptor); + assertEquals(1, descriptor.provides().size()); + + JavaProvides provides = descriptor.provides().iterator().next(); + assertEquals("java.time.chrono.Chronology", provides.service()); + assertArrayEquals( + new String[] { + "org.threeten.extra.chrono.BritishCutoverChronology", + "org.threeten.extra.chrono.CopticChronology", + "org.threeten.extra.chrono.DiscordianChronology", + "org.threeten.extra.chrono.EthiopicChronology", + "org.threeten.extra.chrono.InternationalFixedChronology", + "org.threeten.extra.chrono.JulianChronology", + "org.threeten.extra.chrono.PaxChronology", + "org.threeten.extra.chrono.Symmetry010Chronology", + "org.threeten.extra.chrono.Symmetry454Chronology" + }, + provides.providers().toArray(new String[0])); } @Test - public void testRequires() throws Exception - { - try ( InputStream is = Files.newInputStream( Paths.get( "src/test/resources/dir.descriptor.requires/out/module-info.class" ) ) ) - { - JavaModuleDescriptor descriptor = parser.parse( is ); - - assertNotNull( descriptor); - assertThat( descriptor.requires().size(), is( 5 ) ); - - Set expectedRequires = JavaModuleDescriptor.newAutomaticModule( "_" ) - .requires( "java.base" ) - .requires( "mod_r" ) - .requires( Collections.singleton( JavaRequires.JavaModifier.STATIC ), "mod_r_s" ) - .requires( Collections.singleton( JavaRequires.JavaModifier.TRANSITIVE ), "mod_r_t" ) - .requires( new HashSet( Arrays.asList( JavaRequires.JavaModifier.STATIC, JavaRequires.JavaModifier.TRANSITIVE ) ), "mod_r_s_t" ) - .build() - .requires(); - - assertEquals( expectedRequires, descriptor.requires() ); + public void testRequires() throws Exception { + try (InputStream is = + Files.newInputStream(Paths.get("src/test/resources/dir.descriptor.requires/out/module-info.class"))) { + JavaModuleDescriptor descriptor = parser.parse(is); + + assertNotNull(descriptor); + assertThat(descriptor.requires().size(), is(5)); + + Set expectedRequires = JavaModuleDescriptor.newAutomaticModule("_") + .requires("java.base") + .requires("mod_r") + .requires(Collections.singleton(JavaRequires.JavaModifier.STATIC), "mod_r_s") + .requires(Collections.singleton(JavaRequires.JavaModifier.TRANSITIVE), "mod_r_t") + .requires( + new HashSet(Arrays.asList( + JavaRequires.JavaModifier.STATIC, JavaRequires.JavaModifier.TRANSITIVE)), + "mod_r_s_t") + .build() + .requires(); + + assertEquals(expectedRequires, descriptor.requires()); } } } diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/CmdModuleNameExtractorTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/CmdModuleNameExtractorTest.java index dd1248f..e0536c1 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/CmdModuleNameExtractorTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/CmdModuleNameExtractorTest.java @@ -19,22 +19,20 @@ * under the License. */ -import static org.junit.Assert.assertEquals; - import java.nio.file.Path; import org.junit.Test; -public class CmdModuleNameExtractorTest -{ +import static org.junit.Assert.assertEquals; + +public class CmdModuleNameExtractorTest { @Test - public void testMethodCount() throws Exception - { + public void testMethodCount() throws Exception { // ensure that both implementations are in sync - assertEquals( 2, CmdModuleNameExtractor.class.getDeclaredMethods().length ); - + assertEquals(2, CmdModuleNameExtractor.class.getDeclaredMethods().length); + // if these don't exist, a NoSuchMethodException is thrown - CmdModuleNameExtractor.class.getDeclaredMethod( "main", String[].class ); - CmdModuleNameExtractor.class.getDeclaredMethod( "getModuleName", Path.class ); + CmdModuleNameExtractor.class.getDeclaredMethod("main", String[].class); + CmdModuleNameExtractor.class.getDeclaredMethod("getModuleName", Path.class); } } diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerIT.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerIT.java index c79a29f..ee243b2 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerIT.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerIT.java @@ -19,14 +19,6 @@ * under the License. */ -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.not; -import static org.hamcrest.CoreMatchers.startsWith; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.junit.Assume.assumeThat; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.when; - import java.nio.file.Path; import java.nio.file.Paths; import java.util.Arrays; @@ -38,15 +30,22 @@ import org.junit.runner.RunWith; import org.mockito.Mock; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.CoreMatchers.startsWith; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.Assume.assumeThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + /** - * NOTE Eclipse users must disable the Build automatically option, - * otherwise it'll continually rebuild the project, causing compilations or tests to fail. - * + * NOTE Eclipse users must disable the Build automatically option, + * otherwise it'll continually rebuild the project, causing compilations or tests to fail. + * * @author Robert Scholte */ -@RunWith( org.mockito.junit.MockitoJUnitRunner.class ) -public class LocationManagerIT -{ +@RunWith(org.mockito.junit.MockitoJUnitRunner.class) +public class LocationManagerIT { @Mock private BinaryModuleInfoParser asmParser; @@ -54,84 +53,81 @@ public class LocationManagerIT private SourceModuleInfoParser qdoxParser; private LocationManager locationManager; - - final Path mockModuleInfoJava = Paths.get( "src/test/resources/mock/module-info.java"); - + + final Path mockModuleInfoJava = Paths.get("src/test/resources/mock/module-info.java"); + @BeforeClass - public static void assume() - { - assumeThat( "Requires at least Java 9", System.getProperty( "java.version" ), not( startsWith( "1." ) ) ); + public static void assume() { + assumeThat("Requires at least Java 9", System.getProperty("java.version"), not(startsWith("1."))); } - + @Before - public void onSetup() - { - locationManager = new LocationManager( qdoxParser ) - { + public void onSetup() { + locationManager = new LocationManager(qdoxParser) { @Override - ModuleInfoParser getBinaryModuleInfoParser( Path jdkHome ) - { + ModuleInfoParser getBinaryModuleInfoParser(Path jdkHome) { return asmParser; } }; } - + @Test - public void testManifestWithoutReflectRequires() throws Exception - { - Path abc = Paths.get( "src/test/resources/manifest.without/out" ); - JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule( "base" ).requires( "any" ).build(); - when( qdoxParser.fromSourcePath( any( Path.class ) ) ).thenReturn( descriptor ); - ResolvePathsRequest request = ResolvePathsRequest.ofPaths( Collections.singletonList( abc ) ).setMainModuleDescriptor( mockModuleInfoJava ); - - ResolvePathsResult result = locationManager.resolvePaths( request ); - - assertThat( result.getPathExceptions().size(), is( 0 ) ); - assertThat( result.getMainModuleDescriptor(), is( descriptor) ); - assertThat( result.getPathElements().size(), is( 1 ) ); - assertThat( result.getModulepathElements().size(), is( 0 ) ); - assertThat( result.getClasspathElements().size(), is( 1 ) ); + public void testManifestWithoutReflectRequires() throws Exception { + Path abc = Paths.get("src/test/resources/manifest.without/out"); + JavaModuleDescriptor descriptor = + JavaModuleDescriptor.newModule("base").requires("any").build(); + when(qdoxParser.fromSourcePath(any(Path.class))).thenReturn(descriptor); + ResolvePathsRequest request = + ResolvePathsRequest.ofPaths(Collections.singletonList(abc)).setMainModuleDescriptor(mockModuleInfoJava); + + ResolvePathsResult result = locationManager.resolvePaths(request); + + assertThat(result.getPathExceptions().size(), is(0)); + assertThat(result.getMainModuleDescriptor(), is(descriptor)); + assertThat(result.getPathElements().size(), is(1)); + assertThat(result.getModulepathElements().size(), is(0)); + assertThat(result.getClasspathElements().size(), is(1)); } - + @Test - public void testEmptyWithReflectRequires() throws Exception - { - Path abc = Paths.get( "src/test/resources/empty/out" ); - JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule( "base" ).requires( "a.b.c" ).build(); - when( qdoxParser.fromSourcePath( any( Path.class ) ) ).thenReturn( descriptor ); - ResolvePathsRequest request = ResolvePathsRequest.ofPaths( Collections.singletonList( abc ) ).setMainModuleDescriptor( mockModuleInfoJava ); - - ResolvePathsResult result = locationManager.resolvePaths( request ); - - assertThat( result.getPathExceptions().size(), is( 0 ) ); - assertThat( result.getMainModuleDescriptor(), is( descriptor) ); - assertThat( result.getPathElements().size(), is( 1 ) ); - assertThat( result.getModulepathElements().size(), is( 0 ) ); - assertThat( result.getClasspathElements().size(), is( 1 ) ); + public void testEmptyWithReflectRequires() throws Exception { + Path abc = Paths.get("src/test/resources/empty/out"); + JavaModuleDescriptor descriptor = + JavaModuleDescriptor.newModule("base").requires("a.b.c").build(); + when(qdoxParser.fromSourcePath(any(Path.class))).thenReturn(descriptor); + ResolvePathsRequest request = + ResolvePathsRequest.ofPaths(Collections.singletonList(abc)).setMainModuleDescriptor(mockModuleInfoJava); + + ResolvePathsResult result = locationManager.resolvePaths(request); + + assertThat(result.getPathExceptions().size(), is(0)); + assertThat(result.getMainModuleDescriptor(), is(descriptor)); + assertThat(result.getPathElements().size(), is(1)); + assertThat(result.getModulepathElements().size(), is(0)); + assertThat(result.getClasspathElements().size(), is(1)); } - - @Test( expected = RuntimeException.class ) - public void testResolvePathWithException() throws Exception - { - assumeThat( "Requires at least Java 9", System.getProperty( "java.version" ), not( startsWith( "1." ) ) ); - - Path p = Paths.get( "src/test/resources/jar.empty.invalid.name/101-1.0.0-SNAPSHOT.jar" ); - ResolvePathRequest request = ResolvePathRequest.ofPath( p ); - - locationManager.resolvePath( request ); + + @Test(expected = RuntimeException.class) + public void testResolvePathWithException() throws Exception { + assumeThat("Requires at least Java 9", System.getProperty("java.version"), not(startsWith("1."))); + + Path p = Paths.get("src/test/resources/jar.empty.invalid.name/101-1.0.0-SNAPSHOT.jar"); + ResolvePathRequest request = ResolvePathRequest.ofPath(p); + + locationManager.resolvePath(request); } - + @Test - public void testClassicJarNameStartsWithNumber() throws Exception - { - assumeThat( "Requires at least Java 9", System.getProperty( "java.version" ), not( startsWith( "1." ) ) ); - - Path p = Paths.get( "src/test/resources/jar.empty.invalid.name/101-1.0.0-SNAPSHOT.jar" ); - ResolvePathsRequest request = ResolvePathsRequest.ofPaths( Arrays.asList( p ) ).setMainModuleDescriptor( mockModuleInfoJava ); - - ResolvePathsResult result = locationManager.resolvePaths( request ); - - assertThat( result.getPathExceptions().size(), is( 1 ) ); - assertThat( result.getClasspathElements().size(), is(1) ); + public void testClassicJarNameStartsWithNumber() throws Exception { + assumeThat("Requires at least Java 9", System.getProperty("java.version"), not(startsWith("1."))); + + Path p = Paths.get("src/test/resources/jar.empty.invalid.name/101-1.0.0-SNAPSHOT.jar"); + ResolvePathsRequest request = + ResolvePathsRequest.ofPaths(Arrays.asList(p)).setMainModuleDescriptor(mockModuleInfoJava); + + ResolvePathsResult result = locationManager.resolvePaths(request); + + assertThat(result.getPathExceptions().size(), is(1)); + assertThat(result.getClasspathElements().size(), is(1)); } } diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerTest.java index 35a6f4e..09de41a 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerTest.java @@ -19,12 +19,6 @@ * under the License. */ -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.nullValue; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.when; - import java.io.File; import java.nio.file.Path; import java.nio.file.Paths; @@ -33,15 +27,19 @@ import java.util.HashSet; import org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor.JavaRequires.JavaModifier; - import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -@RunWith( org.mockito.junit.MockitoJUnitRunner.class ) -public class LocationManagerTest -{ +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.nullValue; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + +@RunWith(org.mockito.junit.MockitoJUnitRunner.class) +public class LocationManagerTest { @Mock private BinaryModuleInfoParser asmParser; @@ -49,500 +47,557 @@ public class LocationManagerTest private SourceModuleInfoParser qdoxParser; private LocationManager locationManager; - - final Path mockModuleInfoJava = Paths.get( "src/test/resources/mock/module-info.java"); - + + final Path mockModuleInfoJava = Paths.get("src/test/resources/mock/module-info.java"); + @Before - public void onSetup() - { - locationManager = new LocationManager( qdoxParser ) - { + public void onSetup() { + locationManager = new LocationManager(qdoxParser) { @Override - ModuleInfoParser getBinaryModuleInfoParser( Path jdkHome ) - { + ModuleInfoParser getBinaryModuleInfoParser(Path jdkHome) { return asmParser; } }; } @Test - public void testNoPaths() throws Exception - { - ResolvePathsResult result = locationManager.resolvePaths( ResolvePathsRequest.ofFiles( Collections.emptyList() ) ); - assertThat( result.getMainModuleDescriptor(), nullValue( JavaModuleDescriptor.class) ); - assertThat( result.getPathElements().size(), is( 0 ) ); - assertThat( result.getModulepathElements().size(), is( 0 ) ); - assertThat( result.getClasspathElements().size(), is( 0 ) ); - assertThat( result.getPathExceptions().size(), is( 0 ) ); + public void testNoPaths() throws Exception { + ResolvePathsResult result = + locationManager.resolvePaths(ResolvePathsRequest.ofFiles(Collections.emptyList())); + assertThat(result.getMainModuleDescriptor(), nullValue(JavaModuleDescriptor.class)); + assertThat(result.getPathElements().size(), is(0)); + assertThat(result.getModulepathElements().size(), is(0)); + assertThat(result.getClasspathElements().size(), is(0)); + assertThat(result.getPathExceptions().size(), is(0)); } @Test - public void testWithUnknownRequires() throws Exception - { - JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule( "base" ).requires( "java.base" ).requires( "jdk.net" ).build(); - when( qdoxParser.fromSourcePath( any( Path.class ) ) ).thenReturn( descriptor ); - ResolvePathsRequest request = ResolvePathsRequest.ofFiles( Collections.emptyList() ).setMainModuleDescriptor( mockModuleInfoJava.toFile() ); - - ResolvePathsResult result = locationManager.resolvePaths( request ); - - assertThat( result.getMainModuleDescriptor(), is( descriptor) ); - assertThat( result.getPathElements().size(), is( 0 ) ); - assertThat( result.getModulepathElements().size(), is( 0 ) ); - assertThat( result.getClasspathElements().size(), is( 0 ) ); - assertThat( result.getPathExceptions().size(), is( 0 ) ); - } - - @Test - public void testManifestWithReflectRequires() throws Exception - { - Path abc = Paths.get( "src/test/resources/dir.manifest.with/out" ); - JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule( "base" ).requires( "auto.by.manifest" ).build(); - when( qdoxParser.fromSourcePath( any( Path.class ) ) ).thenReturn( descriptor ); - ResolvePathsRequest request = ResolvePathsRequest.ofPaths( Collections.singletonList( abc ) ).setMainModuleDescriptor( mockModuleInfoJava ); - - ResolvePathsResult result = locationManager.resolvePaths( request ); - - assertThat( result.getMainModuleDescriptor(), is( descriptor) ); - assertThat( result.getPathElements().size(), is( 1 ) ); - assertThat( result.getModulepathElements().size(), is( 1 ) ); - assertThat( result.getModulepathElements().get( abc), is( ModuleNameSource.MANIFEST ) ); - assertThat( result.getClasspathElements().size(), is( 0 ) ); - assertThat( result.getPathExceptions().size(), is( 0 ) ); + public void testWithUnknownRequires() throws Exception { + JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule("base") + .requires("java.base") + .requires("jdk.net") + .build(); + when(qdoxParser.fromSourcePath(any(Path.class))).thenReturn(descriptor); + ResolvePathsRequest request = ResolvePathsRequest.ofFiles(Collections.emptyList()) + .setMainModuleDescriptor(mockModuleInfoJava.toFile()); + + ResolvePathsResult result = locationManager.resolvePaths(request); + + assertThat(result.getMainModuleDescriptor(), is(descriptor)); + assertThat(result.getPathElements().size(), is(0)); + assertThat(result.getModulepathElements().size(), is(0)); + assertThat(result.getClasspathElements().size(), is(0)); + assertThat(result.getPathExceptions().size(), is(0)); } - + @Test - public void testDirDescriptorWithReflectRequires() throws Exception - { - Path abc = Paths.get( "src/test/resources/dir.descriptor/out" ); - JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule( "base" ).requires( "dir.descriptor" ).build(); - when( qdoxParser.fromSourcePath( any( Path.class ) ) ).thenReturn( descriptor ); - ResolvePathsRequest request = ResolvePathsRequest.ofPaths( Collections.singletonList( abc ) ).setMainModuleDescriptor( mockModuleInfoJava ); - - when( asmParser.getModuleDescriptor( abc ) ).thenReturn( JavaModuleDescriptor.newModule( "dir.descriptor" ).build() ); - - ResolvePathsResult result = locationManager.resolvePaths( request ); - - assertThat( result.getMainModuleDescriptor(), is( descriptor) ); - assertThat( result.getPathElements().size(), is( 1 ) ); - assertThat( result.getModulepathElements().size(), is( 1 ) ); - assertThat( result.getModulepathElements().get( abc), is( ModuleNameSource.MODULEDESCRIPTOR ) ); - assertThat( result.getClasspathElements().size(), is( 0 ) ); - assertThat( result.getPathExceptions().size(), is( 0 ) ); + public void testManifestWithReflectRequires() throws Exception { + Path abc = Paths.get("src/test/resources/dir.manifest.with/out"); + JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule("base") + .requires("auto.by.manifest") + .build(); + when(qdoxParser.fromSourcePath(any(Path.class))).thenReturn(descriptor); + ResolvePathsRequest request = + ResolvePathsRequest.ofPaths(Collections.singletonList(abc)).setMainModuleDescriptor(mockModuleInfoJava); + + ResolvePathsResult result = locationManager.resolvePaths(request); + + assertThat(result.getMainModuleDescriptor(), is(descriptor)); + assertThat(result.getPathElements().size(), is(1)); + assertThat(result.getModulepathElements().size(), is(1)); + assertThat(result.getModulepathElements().get(abc), is(ModuleNameSource.MANIFEST)); + assertThat(result.getClasspathElements().size(), is(0)); + assertThat(result.getPathExceptions().size(), is(0)); } @Test - public void testJarWithAsmRequires() throws Exception - { - Path abc = Paths.get( "src/test/resources/jar.descriptor/asm-6.0_BETA.jar" ); - JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule( "base" ).requires( "org.objectweb.asm" ).build(); - when( qdoxParser.fromSourcePath( any( Path.class ) ) ).thenReturn( descriptor ); - ResolvePathsRequest request = ResolvePathsRequest.ofPaths( Collections.singletonList( abc ) ).setMainModuleDescriptor( mockModuleInfoJava ); - - when( asmParser.getModuleDescriptor( abc ) ).thenReturn( JavaModuleDescriptor.newModule( "org.objectweb.asm" ).build() ); - - ResolvePathsResult result = locationManager.resolvePaths( request ); - - assertThat( result.getMainModuleDescriptor(), is( descriptor) ); - assertThat( result.getPathElements().size(), is( 1 ) ); - assertThat( result.getModulepathElements().size(), is( 1 ) ); - assertThat( result.getModulepathElements().get( abc), is( ModuleNameSource.MODULEDESCRIPTOR ) ); - assertThat( result.getClasspathElements().size(), is( 0 ) ); - assertThat( result.getPathExceptions().size(), is( 0 ) ); + public void testDirDescriptorWithReflectRequires() throws Exception { + Path abc = Paths.get("src/test/resources/dir.descriptor/out"); + JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule("base") + .requires("dir.descriptor") + .build(); + when(qdoxParser.fromSourcePath(any(Path.class))).thenReturn(descriptor); + ResolvePathsRequest request = + ResolvePathsRequest.ofPaths(Collections.singletonList(abc)).setMainModuleDescriptor(mockModuleInfoJava); + + when(asmParser.getModuleDescriptor(abc)) + .thenReturn(JavaModuleDescriptor.newModule("dir.descriptor").build()); + + ResolvePathsResult result = locationManager.resolvePaths(request); + + assertThat(result.getMainModuleDescriptor(), is(descriptor)); + assertThat(result.getPathElements().size(), is(1)); + assertThat(result.getModulepathElements().size(), is(1)); + assertThat(result.getModulepathElements().get(abc), is(ModuleNameSource.MODULEDESCRIPTOR)); + assertThat(result.getClasspathElements().size(), is(0)); + assertThat(result.getPathExceptions().size(), is(0)); } - + @Test - public void testIdenticalModuleNames() throws Exception - { - Path pj1 = Paths.get( "src/test/resources/jar.empty/plexus-java-1.0.0-SNAPSHOT.jar" ); - Path pj2 = Paths.get( "src/test/resources/jar.empty.2/plexus-java-2.0.0-SNAPSHOT.jar" ); - JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule( "base" ).requires( "plexus.java" ).build(); - when( qdoxParser.fromSourcePath( any( Path.class ) ) ).thenReturn( descriptor ); - ResolvePathsRequest request = ResolvePathsRequest.ofPaths( Arrays.asList( pj1, pj2 ) ).setMainModuleDescriptor( mockModuleInfoJava ); - - when( asmParser.getModuleDescriptor( pj1 ) ).thenReturn( JavaModuleDescriptor.newAutomaticModule( "plexus.java" ).build() ); - when( asmParser.getModuleDescriptor( pj2 ) ).thenReturn( JavaModuleDescriptor.newAutomaticModule( "plexus.java" ).build() ); - - ResolvePathsResult result = locationManager.resolvePaths( request ); - - assertThat( result.getMainModuleDescriptor(), is( descriptor) ); - assertThat( result.getPathElements().size(), is( 2 ) ); - assertThat( result.getModulepathElements().size(), is( 1 ) ); - assertThat( result.getModulepathElements().containsKey( pj1 ), is( true ) ); - assertThat( result.getModulepathElements().containsKey( pj2 ), is( false ) ); - assertThat( result.getClasspathElements().size(), is( 0 ) ); - assertThat( result.getPathExceptions().size(), is( 0 ) ); + public void testJarWithAsmRequires() throws Exception { + Path abc = Paths.get("src/test/resources/jar.descriptor/asm-6.0_BETA.jar"); + JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule("base") + .requires("org.objectweb.asm") + .build(); + when(qdoxParser.fromSourcePath(any(Path.class))).thenReturn(descriptor); + ResolvePathsRequest request = + ResolvePathsRequest.ofPaths(Collections.singletonList(abc)).setMainModuleDescriptor(mockModuleInfoJava); + + when(asmParser.getModuleDescriptor(abc)) + .thenReturn(JavaModuleDescriptor.newModule("org.objectweb.asm").build()); + + ResolvePathsResult result = locationManager.resolvePaths(request); + + assertThat(result.getMainModuleDescriptor(), is(descriptor)); + assertThat(result.getPathElements().size(), is(1)); + assertThat(result.getModulepathElements().size(), is(1)); + assertThat(result.getModulepathElements().get(abc), is(ModuleNameSource.MODULEDESCRIPTOR)); + assertThat(result.getClasspathElements().size(), is(0)); + assertThat(result.getPathExceptions().size(), is(0)); } @Test - public void testNonJar() throws Exception - { - Path p = Paths.get( "src/test/resources/nonjar/pom.xml" ); - - ResolvePathsRequest request = ResolvePathsRequest.ofPaths( Collections.singletonList( p ) ).setMainModuleDescriptor( mockModuleInfoJava ); - - ResolvePathsResult result = locationManager.resolvePaths( request ); - - assertThat( result.getPathExceptions().size(), is( 1 ) ); + public void testIdenticalModuleNames() throws Exception { + Path pj1 = Paths.get("src/test/resources/jar.empty/plexus-java-1.0.0-SNAPSHOT.jar"); + Path pj2 = Paths.get("src/test/resources/jar.empty.2/plexus-java-2.0.0-SNAPSHOT.jar"); + JavaModuleDescriptor descriptor = + JavaModuleDescriptor.newModule("base").requires("plexus.java").build(); + when(qdoxParser.fromSourcePath(any(Path.class))).thenReturn(descriptor); + ResolvePathsRequest request = + ResolvePathsRequest.ofPaths(Arrays.asList(pj1, pj2)).setMainModuleDescriptor(mockModuleInfoJava); + + when(asmParser.getModuleDescriptor(pj1)) + .thenReturn( + JavaModuleDescriptor.newAutomaticModule("plexus.java").build()); + when(asmParser.getModuleDescriptor(pj2)) + .thenReturn( + JavaModuleDescriptor.newAutomaticModule("plexus.java").build()); + + ResolvePathsResult result = locationManager.resolvePaths(request); + + assertThat(result.getMainModuleDescriptor(), is(descriptor)); + assertThat(result.getPathElements().size(), is(2)); + assertThat(result.getModulepathElements().size(), is(1)); + assertThat(result.getModulepathElements().containsKey(pj1), is(true)); + assertThat(result.getModulepathElements().containsKey(pj2), is(false)); + assertThat(result.getClasspathElements().size(), is(0)); + assertThat(result.getPathExceptions().size(), is(0)); } - + @Test - public void testAdditionalModules() throws Exception - { - Path p = Paths.get( "src/test/resources/mock/jar0.jar" ); - - JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule( "base" ).build(); - when( qdoxParser.fromSourcePath( any( Path.class ) ) ).thenReturn( descriptor ); + public void testNonJar() throws Exception { + Path p = Paths.get("src/test/resources/nonjar/pom.xml"); + ResolvePathsRequest request = - ResolvePathsRequest.ofPaths( Collections.singletonList( p ) ) - .setMainModuleDescriptor( mockModuleInfoJava ) - .setAdditionalModules( Collections.singletonList( "plexus.java" ) ); + ResolvePathsRequest.ofPaths(Collections.singletonList(p)).setMainModuleDescriptor(mockModuleInfoJava); - when( asmParser.getModuleDescriptor( p ) ).thenReturn( JavaModuleDescriptor.newAutomaticModule( "plexus.java" ).build() ); + ResolvePathsResult result = locationManager.resolvePaths(request); - ResolvePathsResult result = locationManager.resolvePaths( request ); + assertThat(result.getPathExceptions().size(), is(1)); + } - assertThat( result.getMainModuleDescriptor(), is( descriptor) ); - assertThat( result.getPathElements().size(), is( 1 ) ); - assertThat( result.getModulepathElements().size(), is( 1 ) ); - assertThat( result.getClasspathElements().size(), is( 0 ) ); - assertThat( result.getPathExceptions().size(), is( 0 ) ); + @Test + public void testAdditionalModules() throws Exception { + Path p = Paths.get("src/test/resources/mock/jar0.jar"); + + JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule("base").build(); + when(qdoxParser.fromSourcePath(any(Path.class))).thenReturn(descriptor); + ResolvePathsRequest request = ResolvePathsRequest.ofPaths(Collections.singletonList(p)) + .setMainModuleDescriptor(mockModuleInfoJava) + .setAdditionalModules(Collections.singletonList("plexus.java")); + + when(asmParser.getModuleDescriptor(p)) + .thenReturn( + JavaModuleDescriptor.newAutomaticModule("plexus.java").build()); + + ResolvePathsResult result = locationManager.resolvePaths(request); + + assertThat(result.getMainModuleDescriptor(), is(descriptor)); + assertThat(result.getPathElements().size(), is(1)); + assertThat(result.getModulepathElements().size(), is(1)); + assertThat(result.getClasspathElements().size(), is(0)); + assertThat(result.getPathExceptions().size(), is(0)); } - + @Test - public void testResolvePath() throws Exception - { - Path abc = Paths.get( "src/test/resources/mock/jar0.jar" ); - ResolvePathRequest request = ResolvePathRequest.ofPath( abc ); - - when( asmParser.getModuleDescriptor( abc ) ).thenReturn( JavaModuleDescriptor.newModule( "org.objectweb.asm" ).build() ); - - ResolvePathResult result = locationManager.resolvePath( request ); - - assertThat( result.getModuleDescriptor(), is( JavaModuleDescriptor.newModule( "org.objectweb.asm" ).build() ) ); - assertThat( result.getModuleNameSource(), is( ModuleNameSource.MODULEDESCRIPTOR ) ); + public void testResolvePath() throws Exception { + Path abc = Paths.get("src/test/resources/mock/jar0.jar"); + ResolvePathRequest request = ResolvePathRequest.ofPath(abc); + + when(asmParser.getModuleDescriptor(abc)) + .thenReturn(JavaModuleDescriptor.newModule("org.objectweb.asm").build()); + + ResolvePathResult result = locationManager.resolvePath(request); + + assertThat( + result.getModuleDescriptor(), + is(JavaModuleDescriptor.newModule("org.objectweb.asm").build())); + assertThat(result.getModuleNameSource(), is(ModuleNameSource.MODULEDESCRIPTOR)); } @Test - public void testNoMatchingProviders() throws Exception - { - Path abc = Paths.get( "src/test/resources/mock/module-info.java" ); // some file called module-info.java - Path def = Paths.get( "src/test/resources/mock/jar0.jar" ); // any existing file - ResolvePathsRequest request = ResolvePathsRequest.ofPaths( def ).setMainModuleDescriptor( abc ).setIncludeAllProviders( true ); - - when( qdoxParser.fromSourcePath( abc ) ).thenReturn( JavaModuleDescriptor.newModule( "abc" ).uses( "device" ).build() ); - when( asmParser.getModuleDescriptor( def ) ).thenReturn( JavaModuleDescriptor.newModule( "def" ).provides( "tool", Arrays.asList( "java", "javac" ) ).build() ); - - ResolvePathsResult result = locationManager.resolvePaths( request ); - assertThat( result.getPathElements().size(), is( 1 ) ); - assertThat( result.getModulepathElements().size(), is( 0 ) ); - assertThat( result.getClasspathElements().size(), is( 1 ) ); - assertThat( result.getPathExceptions().size(), is( 0 ) ); + public void testNoMatchingProviders() throws Exception { + Path abc = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java + Path def = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file + ResolvePathsRequest request = + ResolvePathsRequest.ofPaths(def).setMainModuleDescriptor(abc).setIncludeAllProviders(true); + + when(qdoxParser.fromSourcePath(abc)) + .thenReturn(JavaModuleDescriptor.newModule("abc").uses("device").build()); + when(asmParser.getModuleDescriptor(def)) + .thenReturn(JavaModuleDescriptor.newModule("def") + .provides("tool", Arrays.asList("java", "javac")) + .build()); + + ResolvePathsResult result = locationManager.resolvePaths(request); + assertThat(result.getPathElements().size(), is(1)); + assertThat(result.getModulepathElements().size(), is(0)); + assertThat(result.getClasspathElements().size(), is(1)); + assertThat(result.getPathExceptions().size(), is(0)); } - @Test - public void testMainModuleDescriptorWithProviders() throws Exception - { - Path abc = Paths.get( "src/test/resources/mock/module-info.java" ); // some file called module-info.java - Path def = Paths.get( "src/test/resources/mock/jar0.jar" ); // any existing file - ResolvePathsRequest request = ResolvePathsRequest.ofPaths( def ).setMainModuleDescriptor( abc ).setIncludeAllProviders( true ); - - when( qdoxParser.fromSourcePath( abc ) ).thenReturn( JavaModuleDescriptor.newModule( "abc" ).uses( "tool" ).build() ); - when( asmParser.getModuleDescriptor( def ) ).thenReturn( JavaModuleDescriptor.newModule( "def" ).provides( "tool", Arrays.asList( "java", "javac" ) ).build() ); - - ResolvePathsResult result = locationManager.resolvePaths( request ); - assertThat( result.getPathElements().size(), is( 1 ) ); - assertThat( result.getModulepathElements().size(), is( 1 ) ); - assertThat( result.getClasspathElements().size(), is( 0 ) ); - assertThat( result.getPathExceptions().size(), is( 0 ) ); + public void testMainModuleDescriptorWithProviders() throws Exception { + Path abc = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java + Path def = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file + ResolvePathsRequest request = + ResolvePathsRequest.ofPaths(def).setMainModuleDescriptor(abc).setIncludeAllProviders(true); + + when(qdoxParser.fromSourcePath(abc)) + .thenReturn(JavaModuleDescriptor.newModule("abc").uses("tool").build()); + when(asmParser.getModuleDescriptor(def)) + .thenReturn(JavaModuleDescriptor.newModule("def") + .provides("tool", Arrays.asList("java", "javac")) + .build()); + + ResolvePathsResult result = locationManager.resolvePaths(request); + assertThat(result.getPathElements().size(), is(1)); + assertThat(result.getModulepathElements().size(), is(1)); + assertThat(result.getClasspathElements().size(), is(0)); + assertThat(result.getPathExceptions().size(), is(0)); } @Test - public void testMainModuleDescriptorWithProvidersDontIncludeProviders() throws Exception - { - Path abc = Paths.get( "src/test/resources/mock/module-info.java" ); // some file called module-info.java - Path def = Paths.get( "src/test/resources/mock/jar0.jar" ); // any existing file - ResolvePathsRequest request = ResolvePathsRequest.ofPaths( def ).setMainModuleDescriptor( abc ); - - when( qdoxParser.fromSourcePath( abc ) ).thenReturn( JavaModuleDescriptor.newModule( "abc" ).uses( "tool" ).build() ); - when( asmParser.getModuleDescriptor( def ) ).thenReturn( JavaModuleDescriptor.newModule( "def" ).provides( "tool", Arrays.asList( "java", "javac" ) ).build() ); - - ResolvePathsResult result = locationManager.resolvePaths( request ); - assertThat( result.getPathElements().size(), is( 1 ) ); - assertThat( result.getModulepathElements().size(), is( 0 ) ); - assertThat( result.getClasspathElements().size(), is( 1 ) ); - assertThat( result.getPathExceptions().size(), is( 0 ) ); + public void testMainModuleDescriptorWithProvidersDontIncludeProviders() throws Exception { + Path abc = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java + Path def = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file + ResolvePathsRequest request = ResolvePathsRequest.ofPaths(def).setMainModuleDescriptor(abc); + + when(qdoxParser.fromSourcePath(abc)) + .thenReturn(JavaModuleDescriptor.newModule("abc").uses("tool").build()); + when(asmParser.getModuleDescriptor(def)) + .thenReturn(JavaModuleDescriptor.newModule("def") + .provides("tool", Arrays.asList("java", "javac")) + .build()); + + ResolvePathsResult result = locationManager.resolvePaths(request); + assertThat(result.getPathElements().size(), is(1)); + assertThat(result.getModulepathElements().size(), is(0)); + assertThat(result.getClasspathElements().size(), is(1)); + assertThat(result.getPathExceptions().size(), is(0)); } @Test - public void testTransitiveProviders() throws Exception - { - Path abc = Paths.get( "src/test/resources/mock/module-info.java" ); // some file called module-info.java - Path def = Paths.get( "src/test/resources/mock/jar0.jar" ); // any existing file - Path ghi = Paths.get( "src/test/resources/mock/jar1.jar" ); // any existing file - ResolvePathsRequest request = ResolvePathsRequest.ofPaths( def, ghi ).setMainModuleDescriptor( abc ).setIncludeAllProviders( true ); - - when( qdoxParser.fromSourcePath( abc ) ).thenReturn( JavaModuleDescriptor.newModule( "abc" ).requires( "ghi" ).build() ); - when( asmParser.getModuleDescriptor( def ) ).thenReturn( JavaModuleDescriptor.newModule( "def" ).provides( "tool", Arrays.asList( "java", "javac" ) ).build() ); - when( asmParser.getModuleDescriptor( ghi ) ).thenReturn( JavaModuleDescriptor.newModule( "ghi" ).uses( "tool" ).build() ); - - - ResolvePathsResult result = locationManager.resolvePaths( request ); - assertThat( result.getPathElements().size(), is( 2 ) ); - assertThat( result.getModulepathElements().size(), is( 2 ) ); - assertThat( result.getClasspathElements().size(), is( 0 ) ); - assertThat( result.getPathExceptions().size(), is( 0 ) ); + public void testTransitiveProviders() throws Exception { + Path abc = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java + Path def = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file + Path ghi = Paths.get("src/test/resources/mock/jar1.jar"); // any existing file + ResolvePathsRequest request = ResolvePathsRequest.ofPaths(def, ghi) + .setMainModuleDescriptor(abc) + .setIncludeAllProviders(true); + + when(qdoxParser.fromSourcePath(abc)) + .thenReturn( + JavaModuleDescriptor.newModule("abc").requires("ghi").build()); + when(asmParser.getModuleDescriptor(def)) + .thenReturn(JavaModuleDescriptor.newModule("def") + .provides("tool", Arrays.asList("java", "javac")) + .build()); + when(asmParser.getModuleDescriptor(ghi)) + .thenReturn(JavaModuleDescriptor.newModule("ghi").uses("tool").build()); + + ResolvePathsResult result = locationManager.resolvePaths(request); + assertThat(result.getPathElements().size(), is(2)); + assertThat(result.getModulepathElements().size(), is(2)); + assertThat(result.getClasspathElements().size(), is(0)); + assertThat(result.getPathExceptions().size(), is(0)); } - + @Test - public void testDontIncludeProviders() throws Exception - { - Path abc = Paths.get( "src/test/resources/mock/module-info.java" ); // some file called module-info.java - Path def = Paths.get( "src/test/resources/mock/jar0.jar" ); // any existing file - Path ghi = Paths.get( "src/test/resources/mock/jar1.jar" ); // any existing file - ResolvePathsRequest request = ResolvePathsRequest.ofPaths( def, ghi ).setMainModuleDescriptor( abc ); - - when( qdoxParser.fromSourcePath( abc ) ).thenReturn( JavaModuleDescriptor.newModule( "abc" ).requires( "ghi" ).build() ); - when( asmParser.getModuleDescriptor( def ) ).thenReturn( JavaModuleDescriptor.newModule( "def" ).provides( "tool", Arrays.asList( "java", "javac" ) ).build() ); - when( asmParser.getModuleDescriptor( ghi ) ).thenReturn( JavaModuleDescriptor.newModule( "ghi" ).uses( "tool" ).build() ); - - - ResolvePathsResult result = locationManager.resolvePaths( request ); - assertThat( result.getPathElements().size(), is( 2 ) ); - assertThat( result.getModulepathElements().size(), is( 1 ) ); - assertThat( result.getClasspathElements().size(), is( 1 ) ); - assertThat( result.getPathExceptions().size(), is( 0 ) ); + public void testDontIncludeProviders() throws Exception { + Path abc = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java + Path def = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file + Path ghi = Paths.get("src/test/resources/mock/jar1.jar"); // any existing file + ResolvePathsRequest request = + ResolvePathsRequest.ofPaths(def, ghi).setMainModuleDescriptor(abc); + + when(qdoxParser.fromSourcePath(abc)) + .thenReturn( + JavaModuleDescriptor.newModule("abc").requires("ghi").build()); + when(asmParser.getModuleDescriptor(def)) + .thenReturn(JavaModuleDescriptor.newModule("def") + .provides("tool", Arrays.asList("java", "javac")) + .build()); + when(asmParser.getModuleDescriptor(ghi)) + .thenReturn(JavaModuleDescriptor.newModule("ghi").uses("tool").build()); + + ResolvePathsResult result = locationManager.resolvePaths(request); + assertThat(result.getPathElements().size(), is(2)); + assertThat(result.getModulepathElements().size(), is(1)); + assertThat(result.getClasspathElements().size(), is(1)); + assertThat(result.getPathExceptions().size(), is(0)); } - + @Test - public void testAllowAdditionalModulesWithoutMainDescriptor() throws Exception - { - Path def = Paths.get( "src/test/resources/mock/jar0.jar" ); // any existing file - Path ghi = Paths.get( "src/test/resources/mock/jar1.jar" ); // any existing file - ResolvePathsRequest request = ResolvePathsRequest.ofPaths( def, ghi ).setAdditionalModules( Collections.singleton( "def" ) ); - - when( asmParser.getModuleDescriptor( def ) ).thenReturn( JavaModuleDescriptor.newModule( "def" ).build() ); - when( asmParser.getModuleDescriptor( ghi ) ).thenReturn( JavaModuleDescriptor.newModule( "ghi" ).build() ); - - ResolvePathsResult result = locationManager.resolvePaths( request ); - - assertThat( result.getPathElements().size(), is( 2 ) ); - assertThat( result.getModulepathElements().size(), is( 1 ) ); - assertThat( result.getClasspathElements().size(), is( 1 ) ); - assertThat( result.getPathExceptions().size(), is( 0 ) ); + public void testAllowAdditionalModulesWithoutMainDescriptor() throws Exception { + Path def = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file + Path ghi = Paths.get("src/test/resources/mock/jar1.jar"); // any existing file + ResolvePathsRequest request = + ResolvePathsRequest.ofPaths(def, ghi).setAdditionalModules(Collections.singleton("def")); + + when(asmParser.getModuleDescriptor(def)) + .thenReturn(JavaModuleDescriptor.newModule("def").build()); + when(asmParser.getModuleDescriptor(ghi)) + .thenReturn(JavaModuleDescriptor.newModule("ghi").build()); + + ResolvePathsResult result = locationManager.resolvePaths(request); + + assertThat(result.getPathElements().size(), is(2)); + assertThat(result.getModulepathElements().size(), is(1)); + assertThat(result.getClasspathElements().size(), is(1)); + assertThat(result.getPathExceptions().size(), is(0)); } - + @Test - public void testReuseModuleDescriptor() throws Exception - { - Path def = Paths.get( "src/test/resources/mock/jar0.jar" ); - - ResolvePathRequest request1 = ResolvePathRequest.ofPath( def ); - when( asmParser.getModuleDescriptor( def ) ).thenReturn( JavaModuleDescriptor.newModule( "def" ).build() ); - - ResolvePathResult result1 = locationManager.resolvePath( request1 ); - - ResolvePathsRequest request2 = ResolvePathsRequest.ofPaths( def ); - request2.setModuleDescriptor( result1.getModuleDescriptor() ); - - ResolvePathsResult result2 = locationManager.resolvePaths( request2 ); - - assertThat( result1.getModuleDescriptor(), is( result2.getMainModuleDescriptor() ) ); + public void testReuseModuleDescriptor() throws Exception { + Path def = Paths.get("src/test/resources/mock/jar0.jar"); + + ResolvePathRequest request1 = ResolvePathRequest.ofPath(def); + when(asmParser.getModuleDescriptor(def)) + .thenReturn(JavaModuleDescriptor.newModule("def").build()); + + ResolvePathResult result1 = locationManager.resolvePath(request1); + + ResolvePathsRequest request2 = ResolvePathsRequest.ofPaths(def); + request2.setModuleDescriptor(result1.getModuleDescriptor()); + + ResolvePathsResult result2 = locationManager.resolvePaths(request2); + + assertThat(result1.getModuleDescriptor(), is(result2.getMainModuleDescriptor())); } - + @Test - public void testParseModuleDescriptor() throws Exception - { - Path descriptorPath = Paths.get( "src/test/resources/src.dir/module-info.java" ); - when( qdoxParser.fromSourcePath( descriptorPath ) ).thenReturn( JavaModuleDescriptor.newModule( "a.b.c" ).build() ); - - ResolvePathResult result = locationManager.parseModuleDescriptor( descriptorPath ); - assertThat( result.getModuleNameSource(), is( ModuleNameSource.MODULEDESCRIPTOR ) ); - assertThat( result.getModuleDescriptor().name(), is( "a.b.c" ) ); - - locationManager.parseModuleDescriptor( descriptorPath.toFile() ); - assertThat( result.getModuleNameSource(), is( ModuleNameSource.MODULEDESCRIPTOR ) ); - assertThat( result.getModuleDescriptor().name(), is( "a.b.c" ) ); - - locationManager.parseModuleDescriptor( descriptorPath.toString() ); - assertThat( result.getModuleNameSource(), is( ModuleNameSource.MODULEDESCRIPTOR ) ); - assertThat( result.getModuleDescriptor().name(), is( "a.b.c" ) ); + public void testParseModuleDescriptor() throws Exception { + Path descriptorPath = Paths.get("src/test/resources/src.dir/module-info.java"); + when(qdoxParser.fromSourcePath(descriptorPath)) + .thenReturn(JavaModuleDescriptor.newModule("a.b.c").build()); + + ResolvePathResult result = locationManager.parseModuleDescriptor(descriptorPath); + assertThat(result.getModuleNameSource(), is(ModuleNameSource.MODULEDESCRIPTOR)); + assertThat(result.getModuleDescriptor().name(), is("a.b.c")); + + locationManager.parseModuleDescriptor(descriptorPath.toFile()); + assertThat(result.getModuleNameSource(), is(ModuleNameSource.MODULEDESCRIPTOR)); + assertThat(result.getModuleDescriptor().name(), is("a.b.c")); + + locationManager.parseModuleDescriptor(descriptorPath.toString()); + assertThat(result.getModuleNameSource(), is(ModuleNameSource.MODULEDESCRIPTOR)); + assertThat(result.getModuleDescriptor().name(), is("a.b.c")); } - + @Test - public void testTransitiveStatic() throws Exception - { - Path moduleA = Paths.get( "src/test/resources/mock/module-info.java" ); // some file called module-info.java - Path moduleB = Paths.get( "src/test/resources/mock/jar0.jar" ); // any existing file - Path moduleC = Paths.get( "src/test/resources/mock/jar1.jar" ); // any existing file - ResolvePathsRequest request = ResolvePathsRequest.ofPaths( moduleB, moduleC ).setMainModuleDescriptor( moduleA ); - - when( qdoxParser.fromSourcePath( moduleA ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleA" ) - .requires( "moduleB" ).build() ); - when( asmParser.getModuleDescriptor( moduleB ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleB" ) - .requires( Collections.singleton( JavaModifier.STATIC ), "moduleC" ).build() ); - when( asmParser.getModuleDescriptor( moduleC ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleC" ).build() ); - - - ResolvePathsResult result = locationManager.resolvePaths( request ); - assertThat( result.getPathElements().size(), is( 2 ) ); - assertThat( result.getModulepathElements().size(), is( 1 ) ); - assertThat( result.getClasspathElements().size(), is( 1 ) ); - assertThat( result.getPathExceptions().size(), is( 0 ) ); + public void testTransitiveStatic() throws Exception { + Path moduleA = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java + Path moduleB = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file + Path moduleC = Paths.get("src/test/resources/mock/jar1.jar"); // any existing file + ResolvePathsRequest request = + ResolvePathsRequest.ofPaths(moduleB, moduleC).setMainModuleDescriptor(moduleA); + + when(qdoxParser.fromSourcePath(moduleA)) + .thenReturn(JavaModuleDescriptor.newModule("moduleA") + .requires("moduleB") + .build()); + when(asmParser.getModuleDescriptor(moduleB)) + .thenReturn(JavaModuleDescriptor.newModule("moduleB") + .requires(Collections.singleton(JavaModifier.STATIC), "moduleC") + .build()); + when(asmParser.getModuleDescriptor(moduleC)) + .thenReturn(JavaModuleDescriptor.newModule("moduleC").build()); + + ResolvePathsResult result = locationManager.resolvePaths(request); + assertThat(result.getPathElements().size(), is(2)); + assertThat(result.getModulepathElements().size(), is(1)); + assertThat(result.getClasspathElements().size(), is(1)); + assertThat(result.getPathExceptions().size(), is(0)); } @Test - public void testDirectStatic() throws Exception - { - Path moduleA = Paths.get( "src/test/resources/mock/module-info.java" ); // some file called module-info.java - Path moduleB = Paths.get( "src/test/resources/mock/jar0.jar" ); // any existing file - Path moduleC = Paths.get( "src/test/resources/mock/jar1.jar" ); // any existing file - Path moduleD = Paths.get( "src/test/resources/mock/jar2.jar" ); // any existing file - ResolvePathsRequest request = ResolvePathsRequest.ofPaths( moduleB, moduleC, moduleD ) - .setMainModuleDescriptor( moduleA ); - //.setIncludeStatic( true ); - - when( qdoxParser.fromSourcePath( moduleA ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleA" ) - .requires( "moduleB" ) - .requires( Collections.singleton( JavaModifier.STATIC ), "moduleD") - .build() ); - when( asmParser.getModuleDescriptor( moduleB ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleB" ) - .requires( Collections.singleton( JavaModifier.STATIC ), "moduleC" ) - .build() ); - when( asmParser.getModuleDescriptor( moduleC ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleC" ).build() ); - when( asmParser.getModuleDescriptor( moduleD ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleD" ).build() ); - - - ResolvePathsResult result = locationManager.resolvePaths( request ); - assertThat( result.getPathElements().size(), is( 3 ) ); - assertThat( "content: " + result.getModulepathElements(), result.getModulepathElements().size(), is( 2 ) ); - assertThat( result.getModulepathElements().containsKey( moduleB ), is( true ) ); - assertThat( result.getModulepathElements().containsKey( moduleD ), is( true ) ); - assertThat( result.getClasspathElements().size(), is( 1 ) ); - assertThat( result.getClasspathElements().contains( moduleC ), is( true ) ); - assertThat( result.getPathExceptions().size(), is( 0 ) ); + public void testDirectStatic() throws Exception { + Path moduleA = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java + Path moduleB = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file + Path moduleC = Paths.get("src/test/resources/mock/jar1.jar"); // any existing file + Path moduleD = Paths.get("src/test/resources/mock/jar2.jar"); // any existing file + ResolvePathsRequest request = + ResolvePathsRequest.ofPaths(moduleB, moduleC, moduleD).setMainModuleDescriptor(moduleA); + // .setIncludeStatic( true ); + + when(qdoxParser.fromSourcePath(moduleA)) + .thenReturn(JavaModuleDescriptor.newModule("moduleA") + .requires("moduleB") + .requires(Collections.singleton(JavaModifier.STATIC), "moduleD") + .build()); + when(asmParser.getModuleDescriptor(moduleB)) + .thenReturn(JavaModuleDescriptor.newModule("moduleB") + .requires(Collections.singleton(JavaModifier.STATIC), "moduleC") + .build()); + when(asmParser.getModuleDescriptor(moduleC)) + .thenReturn(JavaModuleDescriptor.newModule("moduleC").build()); + when(asmParser.getModuleDescriptor(moduleD)) + .thenReturn(JavaModuleDescriptor.newModule("moduleD").build()); + + ResolvePathsResult result = locationManager.resolvePaths(request); + assertThat(result.getPathElements().size(), is(3)); + assertThat( + "content: " + result.getModulepathElements(), + result.getModulepathElements().size(), + is(2)); + assertThat(result.getModulepathElements().containsKey(moduleB), is(true)); + assertThat(result.getModulepathElements().containsKey(moduleD), is(true)); + assertThat(result.getClasspathElements().size(), is(1)); + assertThat(result.getClasspathElements().contains(moduleC), is(true)); + assertThat(result.getPathExceptions().size(), is(0)); } - + @Test - public void testDuplicateModule() throws Exception - { - Path moduleA = Paths.get( "src/test/resources/mock/module-info.java" ); // some file called module-info.java - Path moduleB = Paths.get( "src/test/resources/mock/jar0.jar" ); // any existing file - Path moduleC = Paths.get( "src/test/resources/mock/jar1.jar" ); // any existing file - - ResolvePathsRequest request = ResolvePathsRequest.ofPaths( moduleB, moduleC ).setMainModuleDescriptor( moduleA ); - - when( qdoxParser.fromSourcePath( moduleA ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleA" ) - .requires( "anonymous" ) - .build() ); - when( asmParser.getModuleDescriptor( moduleB ) ).thenReturn( JavaModuleDescriptor.newModule( "anonymous" ) - .build() ); - when( asmParser.getModuleDescriptor( moduleC ) ).thenReturn( JavaModuleDescriptor.newModule( "anonymous" ) - .build() ); - - ResolvePathsResult result = locationManager.resolvePaths( request ); - assertThat( result.getPathElements().size(), is( 2 ) ); - assertThat( result.getModulepathElements().size(), is( 1 ) ); - assertThat( result.getModulepathElements().containsKey( moduleB ), is( true ) ); - // with current default the duplicate will be ignored - assertThat( result.getClasspathElements().size(), is( 0 ) ); - assertThat( result.getPathExceptions().size(), is( 0 ) ); + public void testDuplicateModule() throws Exception { + Path moduleA = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java + Path moduleB = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file + Path moduleC = Paths.get("src/test/resources/mock/jar1.jar"); // any existing file + + ResolvePathsRequest request = + ResolvePathsRequest.ofPaths(moduleB, moduleC).setMainModuleDescriptor(moduleA); + + when(qdoxParser.fromSourcePath(moduleA)) + .thenReturn(JavaModuleDescriptor.newModule("moduleA") + .requires("anonymous") + .build()); + when(asmParser.getModuleDescriptor(moduleB)) + .thenReturn(JavaModuleDescriptor.newModule("anonymous").build()); + when(asmParser.getModuleDescriptor(moduleC)) + .thenReturn(JavaModuleDescriptor.newModule("anonymous").build()); + + ResolvePathsResult result = locationManager.resolvePaths(request); + assertThat(result.getPathElements().size(), is(2)); + assertThat(result.getModulepathElements().size(), is(1)); + assertThat(result.getModulepathElements().containsKey(moduleB), is(true)); + // with current default the duplicate will be ignored + assertThat(result.getClasspathElements().size(), is(0)); + assertThat(result.getPathExceptions().size(), is(0)); } - + @Test - public void testStaticTransitive() throws Exception - { - Path moduleA = Paths.get( "src/test/resources/mock/module-info.java" ); // some file called module-info.java - Path moduleB = Paths.get( "src/test/resources/mock/jar0.jar" ); // any existing file - Path moduleC = Paths.get( "src/test/resources/mock/jar1.jar" ); // any existing file - Path moduleD = Paths.get( "src/test/resources/mock/jar2.jar" ); // any existing file - ResolvePathsRequest request = ResolvePathsRequest.ofPaths( moduleB, moduleC, moduleD ).setMainModuleDescriptor( moduleA ); - - when( qdoxParser.fromSourcePath( moduleA ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleA" ) - .requires( "moduleB" ) - .build() ); - when( asmParser.getModuleDescriptor( moduleB ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleB" ) - .requires( new HashSet<>( Arrays.asList( JavaModifier.STATIC,JavaModifier.TRANSITIVE ) ), "moduleC" ) - .build() ); - when( asmParser.getModuleDescriptor( moduleC ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleC" ) - .requires( new HashSet<>( Arrays.asList( JavaModifier.STATIC ) ), "moduleD" ) - .build() ); - when( asmParser.getModuleDescriptor( moduleD ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleD" ).build() ); - - - ResolvePathsResult result = locationManager.resolvePaths( request ); - assertThat( result.getPathElements().size(), is( 3 ) ); - assertThat( "modulepathelements:" + result.getModulepathElements(), - result.getModulepathElements().size(), is( 2 ) ); - assertThat( result.getModulepathElements().containsKey( moduleB ), is( true ) ); - assertThat( result.getModulepathElements().containsKey( moduleC ), is( true ) ); - assertThat( result.getClasspathElements().size(), is( 1 ) ); - assertThat( result.getClasspathElements().contains( moduleD ), is( true ) ); - assertThat( result.getPathExceptions().size(), is( 0 ) ); + public void testStaticTransitive() throws Exception { + Path moduleA = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java + Path moduleB = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file + Path moduleC = Paths.get("src/test/resources/mock/jar1.jar"); // any existing file + Path moduleD = Paths.get("src/test/resources/mock/jar2.jar"); // any existing file + ResolvePathsRequest request = + ResolvePathsRequest.ofPaths(moduleB, moduleC, moduleD).setMainModuleDescriptor(moduleA); + + when(qdoxParser.fromSourcePath(moduleA)) + .thenReturn(JavaModuleDescriptor.newModule("moduleA") + .requires("moduleB") + .build()); + when(asmParser.getModuleDescriptor(moduleB)) + .thenReturn(JavaModuleDescriptor.newModule("moduleB") + .requires(new HashSet<>(Arrays.asList(JavaModifier.STATIC, JavaModifier.TRANSITIVE)), "moduleC") + .build()); + when(asmParser.getModuleDescriptor(moduleC)) + .thenReturn(JavaModuleDescriptor.newModule("moduleC") + .requires(new HashSet<>(Arrays.asList(JavaModifier.STATIC)), "moduleD") + .build()); + when(asmParser.getModuleDescriptor(moduleD)) + .thenReturn(JavaModuleDescriptor.newModule("moduleD").build()); + + ResolvePathsResult result = locationManager.resolvePaths(request); + assertThat(result.getPathElements().size(), is(3)); + assertThat( + "modulepathelements:" + result.getModulepathElements(), + result.getModulepathElements().size(), + is(2)); + assertThat(result.getModulepathElements().containsKey(moduleB), is(true)); + assertThat(result.getModulepathElements().containsKey(moduleC), is(true)); + assertThat(result.getClasspathElements().size(), is(1)); + assertThat(result.getClasspathElements().contains(moduleD), is(true)); + assertThat(result.getPathExceptions().size(), is(0)); } @Test /** * test case for https://issues.apache.org/jira/browse/MCOMPILER-481 */ - public void includeDeeperRequiresStatic() throws Exception - { - Path moduleA = Paths.get( "src/test/resources/mock/module-info.java" ); // some file called module-info.java - Path moduleB = Paths.get( "src/test/resources/mock/jar0.jar" ); // any existing file - Path moduleC = Paths.get( "src/test/resources/mock/jar1.jar" ); // any existing file - ResolvePathsRequest request = ResolvePathsRequest.ofPaths( moduleA, moduleB, moduleC ) - .setMainModuleDescriptor( moduleA ) - .setIncludeStatic( true ); - when( qdoxParser.fromSourcePath( moduleA ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleA" ) - .requires( "moduleB") - .build() ); - when( asmParser.getModuleDescriptor( moduleB ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleB" ) - .requires( Collections.singleton( JavaModifier.STATIC ), "moduleC" ) - .build() ); - when( asmParser.getModuleDescriptor( moduleC ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleC" ).build() ); - - ResolvePathsResult result = locationManager.resolvePaths( request ); - assertThat( "modulepathelements:" + result.getModulepathElements(), - result.getModulepathElements().size(), is( 2 ) ); - assertThat( result.getModulepathElements().containsKey( moduleB ), is( true ) ); - assertThat( result.getModulepathElements().containsKey( moduleC ), is( true ) ); - + public void includeDeeperRequiresStatic() throws Exception { + Path moduleA = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java + Path moduleB = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file + Path moduleC = Paths.get("src/test/resources/mock/jar1.jar"); // any existing file + ResolvePathsRequest request = ResolvePathsRequest.ofPaths(moduleA, moduleB, moduleC) + .setMainModuleDescriptor(moduleA) + .setIncludeStatic(true); + when(qdoxParser.fromSourcePath(moduleA)) + .thenReturn(JavaModuleDescriptor.newModule("moduleA") + .requires("moduleB") + .build()); + when(asmParser.getModuleDescriptor(moduleB)) + .thenReturn(JavaModuleDescriptor.newModule("moduleB") + .requires(Collections.singleton(JavaModifier.STATIC), "moduleC") + .build()); + when(asmParser.getModuleDescriptor(moduleC)) + .thenReturn(JavaModuleDescriptor.newModule("moduleC").build()); + + ResolvePathsResult result = locationManager.resolvePaths(request); + assertThat( + "modulepathelements:" + result.getModulepathElements(), + result.getModulepathElements().size(), + is(2)); + assertThat(result.getModulepathElements().containsKey(moduleB), is(true)); + assertThat(result.getModulepathElements().containsKey(moduleC), is(true)); } @Test /** * test case for https://issues.apache.org/jira/browse/MCOMPILER-482 */ - public void includeDeeperRequiresStaticTransitive() throws Exception - { - Path moduleA = Paths.get( "src/test/resources/mock/module-info.java" ); // some file called module-info.java core - Path moduleB = Paths.get( "src/test/resources/mock/jar0.jar" ); // any existing file - Path moduleC = Paths.get( "src/test/resources/mock/jar1.jar" ); // any existing file - Path moduleD = Paths.get( "src/test/resources/mock/jar2.jar" ); // any existing file - ResolvePathsRequest request = ResolvePathsRequest.ofPaths( moduleA, moduleB, moduleC, moduleD ) - .setMainModuleDescriptor( moduleA ) - .setIncludeStatic( true ); - when( qdoxParser.fromSourcePath( moduleA ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleA" ) - .requires( "moduleB") - .build() ); - when( asmParser.getModuleDescriptor( moduleB ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleB" ) - .requires( "moduleC" ) - .requires( new HashSet<>( Arrays.asList( JavaModifier.STATIC,JavaModifier.TRANSITIVE ) ), "moduleD" ) - .build() ); - when( asmParser.getModuleDescriptor( moduleC ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleC" ) - .requires( new HashSet<>( Arrays.asList( JavaModifier.STATIC,JavaModifier.TRANSITIVE ) ), "moduleD" ) - .build() ); - when( asmParser.getModuleDescriptor( moduleD ) ).thenReturn( JavaModuleDescriptor.newModule( "moduleD" ) - .build() ); - - ResolvePathsResult result = locationManager.resolvePaths( request ); - assertThat( "modulepathelements:" + result.getModulepathElements(), - result.getModulepathElements().size(), is( 3 ) ); - assertThat( result.getModulepathElements().containsKey( moduleB ), is( true ) ); - assertThat( result.getModulepathElements().containsKey( moduleC ), is( true ) ); - assertThat( result.getModulepathElements().containsKey( moduleD ), is( true ) ); - + public void includeDeeperRequiresStaticTransitive() throws Exception { + Path moduleA = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java core + Path moduleB = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file + Path moduleC = Paths.get("src/test/resources/mock/jar1.jar"); // any existing file + Path moduleD = Paths.get("src/test/resources/mock/jar2.jar"); // any existing file + ResolvePathsRequest request = ResolvePathsRequest.ofPaths(moduleA, moduleB, moduleC, moduleD) + .setMainModuleDescriptor(moduleA) + .setIncludeStatic(true); + when(qdoxParser.fromSourcePath(moduleA)) + .thenReturn(JavaModuleDescriptor.newModule("moduleA") + .requires("moduleB") + .build()); + when(asmParser.getModuleDescriptor(moduleB)) + .thenReturn(JavaModuleDescriptor.newModule("moduleB") + .requires("moduleC") + .requires(new HashSet<>(Arrays.asList(JavaModifier.STATIC, JavaModifier.TRANSITIVE)), "moduleD") + .build()); + when(asmParser.getModuleDescriptor(moduleC)) + .thenReturn(JavaModuleDescriptor.newModule("moduleC") + .requires(new HashSet<>(Arrays.asList(JavaModifier.STATIC, JavaModifier.TRANSITIVE)), "moduleD") + .build()); + when(asmParser.getModuleDescriptor(moduleD)) + .thenReturn(JavaModuleDescriptor.newModule("moduleD").build()); + + ResolvePathsResult result = locationManager.resolvePaths(request); + assertThat( + "modulepathelements:" + result.getModulepathElements(), + result.getModulepathElements().size(), + is(3)); + assertThat(result.getModulepathElements().containsKey(moduleB), is(true)); + assertThat(result.getModulepathElements().containsKey(moduleC), is(true)); + assertThat(result.getModulepathElements().containsKey(moduleD), is(true)); } - - } diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/MainClassModuleNameExtractorTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/MainClassModuleNameExtractorTest.java index 4a8acd9..57d2b1a 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/MainClassModuleNameExtractorTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/MainClassModuleNameExtractorTest.java @@ -24,20 +24,16 @@ import java.nio.file.Paths; import java.util.Collections; -public class MainClassModuleNameExtractorTest extends AbstractFilenameModuleNameExtractorTest -{ +public class MainClassModuleNameExtractorTest extends AbstractFilenameModuleNameExtractorTest { @Override - protected ModuleNameExtractor getExtractor() - { - return new ModuleNameExtractor() - { - MainClassModuleNameExtractor extractor = new MainClassModuleNameExtractor( Paths.get( System.getProperty( "java.home" ) ) ); - + protected ModuleNameExtractor getExtractor() { + return new ModuleNameExtractor() { + MainClassModuleNameExtractor extractor = + new MainClassModuleNameExtractor(Paths.get(System.getProperty("java.home"))); + @Override - public String extract( Path file ) - throws IOException - { - return extractor.extract( Collections.singletonMap( file, file ) ).get( file ); + public String extract(Path file) throws IOException { + return extractor.extract(Collections.singletonMap(file, file)).get(file); } }; } diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/ManifestModuleNameExtractorTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/ManifestModuleNameExtractorTest.java index f221e62..35e21d6 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/ManifestModuleNameExtractorTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/ManifestModuleNameExtractorTest.java @@ -18,44 +18,40 @@ * specific language governing permissions and limitations * under the License. */ -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; - import java.nio.file.Paths; import org.junit.Test; -public class ManifestModuleNameExtractorTest -{ +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + +public class ManifestModuleNameExtractorTest { private ManifestModuleNameExtractor extractor = new ManifestModuleNameExtractor(); @Test - public void testNoManifestInJar() throws Exception - { - assertNull( extractor.extract( Paths.get( "src/test/resources/jar.name/plexus-java-1.0.0-SNAPSHOT.jar" ) ) ); + public void testNoManifestInJar() throws Exception { + assertNull(extractor.extract(Paths.get("src/test/resources/jar.name/plexus-java-1.0.0-SNAPSHOT.jar"))); } @Test - public void testManifestInJar() throws Exception - { - assertEquals( "org.codehaus.plexus.languages.java", extractor.extract( Paths.get( "src/test/resources/jar.manifest.with/plexus-java-1.0.0-SNAPSHOT.jar" ) ) ); + public void testManifestInJar() throws Exception { + assertEquals( + "org.codehaus.plexus.languages.java", + extractor.extract(Paths.get("src/test/resources/jar.manifest.with/plexus-java-1.0.0-SNAPSHOT.jar"))); } @Test - public void testNoManifestInDir() throws Exception - { - assertNull( extractor.extract( Paths.get( "src/test/resources/empty/out" ) ) ); + public void testNoManifestInDir() throws Exception { + assertNull(extractor.extract(Paths.get("src/test/resources/empty/out"))); } @Test - public void testEmptyManifestInDir() throws Exception - { - assertNull( extractor.extract( Paths.get( "src/test/resources/manifest.without/out" ) ) ); + public void testEmptyManifestInDir() throws Exception { + assertNull(extractor.extract(Paths.get("src/test/resources/manifest.without/out"))); } @Test - public void testManifestInDir() throws Exception - { - assertEquals( "auto.by.manifest", extractor.extract( Paths.get( "src/test/resources/dir.manifest.with/out" ) ) ); + public void testManifestInDir() throws Exception { + assertEquals("auto.by.manifest", extractor.extract(Paths.get("src/test/resources/dir.manifest.with/out"))); } } diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/SourceModuleInfoParserTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/SourceModuleInfoParserTest.java index 9c4b883..ef85a95 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/SourceModuleInfoParserTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/SourceModuleInfoParserTest.java @@ -19,11 +19,6 @@ * under the License. */ -import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - import java.nio.file.Paths; import java.util.Arrays; import java.util.HashSet; @@ -35,55 +30,59 @@ import org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor.JavaRequires; import org.junit.Test; -public class SourceModuleInfoParserTest -{ +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +public class SourceModuleInfoParserTest { private SourceModuleInfoParser parser = new SourceModuleInfoParser(); @Test - public void test() throws Exception - { - JavaModuleDescriptor moduleDescriptor = parser.fromSourcePath( Paths.get( "src/test/resources/src.dir/module-info.java" ) ); - assertEquals( "a.b.c", moduleDescriptor.name() ); - + public void test() throws Exception { + JavaModuleDescriptor moduleDescriptor = + parser.fromSourcePath(Paths.get("src/test/resources/src.dir/module-info.java")); + assertEquals("a.b.c", moduleDescriptor.name()); + Iterator requiresIter = moduleDescriptor.requires().iterator(); - + JavaRequires requires = requiresIter.next(); - assertEquals( "d.e", requires.name() ); - assertFalse( requires.modifiers().contains( JavaRequires.JavaModifier.STATIC ) ); - assertFalse( requires.modifiers().contains( JavaRequires.JavaModifier.TRANSITIVE ) ); + assertEquals("d.e", requires.name()); + assertFalse(requires.modifiers().contains(JavaRequires.JavaModifier.STATIC)); + assertFalse(requires.modifiers().contains(JavaRequires.JavaModifier.TRANSITIVE)); requires = requiresIter.next(); - assertEquals( "s.d.e", requires.name() ); - assertTrue( requires.modifiers().contains( JavaRequires.JavaModifier.STATIC ) ); - assertFalse( requires.modifiers().contains( JavaRequires.JavaModifier.TRANSITIVE ) ); + assertEquals("s.d.e", requires.name()); + assertTrue(requires.modifiers().contains(JavaRequires.JavaModifier.STATIC)); + assertFalse(requires.modifiers().contains(JavaRequires.JavaModifier.TRANSITIVE)); requires = requiresIter.next(); - assertEquals( "t.d.e", requires.name() ); - assertFalse( requires.modifiers().contains( JavaRequires.JavaModifier.STATIC ) ); - assertTrue( requires.modifiers().contains( JavaRequires.JavaModifier.TRANSITIVE ) ); - + assertEquals("t.d.e", requires.name()); + assertFalse(requires.modifiers().contains(JavaRequires.JavaModifier.STATIC)); + assertTrue(requires.modifiers().contains(JavaRequires.JavaModifier.TRANSITIVE)); + requires = requiresIter.next(); - assertEquals( "s.t.d.e", requires.name() ); - assertTrue( requires.modifiers().contains( JavaRequires.JavaModifier.STATIC ) ); - assertTrue( requires.modifiers().contains( JavaRequires.JavaModifier.TRANSITIVE ) ); - + assertEquals("s.t.d.e", requires.name()); + assertTrue(requires.modifiers().contains(JavaRequires.JavaModifier.STATIC)); + assertTrue(requires.modifiers().contains(JavaRequires.JavaModifier.TRANSITIVE)); + Iterator exportsIter = moduleDescriptor.exports().iterator(); - - JavaExports exports = exportsIter.next(); - assertEquals( "f.g", exports.source() ); - - exports = exportsIter.next(); - assertEquals( "f.g.h", exports.source() ); - assertEquals( new HashSet<>( Arrays.asList( "i.j", "k.l.m" ) ), exports.targets() ); - + + JavaExports exports = exportsIter.next(); + assertEquals("f.g", exports.source()); + + exports = exportsIter.next(); + assertEquals("f.g.h", exports.source()); + assertEquals(new HashSet<>(Arrays.asList("i.j", "k.l.m")), exports.targets()); + Set uses = moduleDescriptor.uses(); - assertArrayEquals( new String[] { "com.example.foo.spi.Intf" } , uses.toArray( new String[0] ) ); - + assertArrayEquals(new String[] {"com.example.foo.spi.Intf"}, uses.toArray(new String[0])); + Iterator providesIter = moduleDescriptor.provides().iterator(); JavaProvides provides = providesIter.next(); - - assertEquals( "com.example.foo.spi.Intf", provides.service() ); - assertArrayEquals( new String[] { "com.example.foo.Impl" }, provides.providers().toArray( new String[0] ) ); - } + assertEquals("com.example.foo.spi.Intf", provides.service()); + assertArrayEquals( + new String[] {"com.example.foo.Impl"}, provides.providers().toArray(new String[0])); + } } diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/version/JavaVersionTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/version/JavaVersionTest.java index 8474349..3e1cbd0 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/version/JavaVersionTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/version/JavaVersionTest.java @@ -19,6 +19,8 @@ * under the License. */ +import org.junit.Test; + import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -26,136 +28,134 @@ import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; -import org.junit.Test; - /* * Parsing is lazy, only triggered when comparing */ -public class JavaVersionTest -{ +public class JavaVersionTest { @Test - public void testParse() - throws Exception - { - assertTrue( JavaVersion.parse( "1.4" ).compareTo( JavaVersion.parse( "1.4.2" ) ) < 0 ); - assertTrue( JavaVersion.parse( "1.4" ).compareTo( JavaVersion.parse( "1.5" ) ) < 0 ); - assertTrue( JavaVersion.parse( "1.8" ).compareTo( JavaVersion.parse( "9" ) ) < 0 ); - - assertTrue( JavaVersion.parse( "1.4" ).compareTo( JavaVersion.parse( "1.4" ) ) == 0 ); - assertTrue( JavaVersion.parse( "1.4.2" ).compareTo( JavaVersion.parse( "1.4.2" ) ) == 0 ); - assertTrue( JavaVersion.parse( "9" ).compareTo( JavaVersion.parse( "9" ) ) == 0 ); - - assertTrue( JavaVersion.parse( "1.4.2" ).compareTo( JavaVersion.parse( "1.4" ) ) > 0 ); - assertTrue( JavaVersion.parse( "1.5" ).compareTo( JavaVersion.parse( "1.4" ) ) > 0 ); - assertTrue( JavaVersion.parse( "9" ).compareTo( JavaVersion.parse( "1.8" ) ) > 0 ); + public void testParse() throws Exception { + assertTrue(JavaVersion.parse("1.4").compareTo(JavaVersion.parse("1.4.2")) < 0); + assertTrue(JavaVersion.parse("1.4").compareTo(JavaVersion.parse("1.5")) < 0); + assertTrue(JavaVersion.parse("1.8").compareTo(JavaVersion.parse("9")) < 0); + + assertTrue(JavaVersion.parse("1.4").compareTo(JavaVersion.parse("1.4")) == 0); + assertTrue(JavaVersion.parse("1.4.2").compareTo(JavaVersion.parse("1.4.2")) == 0); + assertTrue(JavaVersion.parse("9").compareTo(JavaVersion.parse("9")) == 0); + + assertTrue(JavaVersion.parse("1.4.2").compareTo(JavaVersion.parse("1.4")) > 0); + assertTrue(JavaVersion.parse("1.5").compareTo(JavaVersion.parse("1.4")) > 0); + assertTrue(JavaVersion.parse("9").compareTo(JavaVersion.parse("1.8")) > 0); } - + @Test - public void testVersionNamingExamples() - { - // All GA (FCS) versions are ordered based on the standard dot-notation. For example: 1.3.0 < 1.3.0_01 < 1.3.1 < 1.3.1_01. + public void testVersionNamingExamples() { + // All GA (FCS) versions are ordered based on the standard dot-notation. For example: 1.3.0 < 1.3.0_01 < 1.3.1 < + // 1.3.1_01. // Source: http://www.oracle.com/technetwork/java/javase/versioning-naming-139433.html - - assertTrue( JavaVersion.parse( "1.3.0" ).compareTo( JavaVersion.parse( "1.3.0_01" ) ) < 0 ); - assertTrue( JavaVersion.parse( "1.3.0_01" ).compareTo( JavaVersion.parse( "1.3.1" ) ) < 0 ); - assertTrue( JavaVersion.parse( "1.3.1" ).compareTo( JavaVersion.parse( "1.3.1_01" ) ) < 0 ); - - assertTrue( JavaVersion.parse( "1.3.0" ).compareTo( JavaVersion.parse( "1.3.0-b24" ) ) < 0 ); + + assertTrue(JavaVersion.parse("1.3.0").compareTo(JavaVersion.parse("1.3.0_01")) < 0); + assertTrue(JavaVersion.parse("1.3.0_01").compareTo(JavaVersion.parse("1.3.1")) < 0); + assertTrue(JavaVersion.parse("1.3.1").compareTo(JavaVersion.parse("1.3.1_01")) < 0); + + assertTrue(JavaVersion.parse("1.3.0").compareTo(JavaVersion.parse("1.3.0-b24")) < 0); } @Test public void testJEP223Short() { // http://openjdk.java.net/jeps/223 - assertTrue( JavaVersion.parse( "9-ea" ).compareTo( JavaVersion.parse( "9" ) ) < 0 ); - assertTrue( JavaVersion.parse( "9" ).compareTo( JavaVersion.parse( "9.0.1" ) ) < 0 ); - assertTrue( JavaVersion.parse( "9.0.1" ).compareTo( JavaVersion.parse( "9.0.2" ) ) < 0 ); - assertTrue( JavaVersion.parse( "9.0.2" ).compareTo( JavaVersion.parse( "9.1.2" ) ) < 0 ); - assertTrue( JavaVersion.parse( "9.1.2" ).compareTo( JavaVersion.parse( "9.1.3" ) ) < 0 ); - assertTrue( JavaVersion.parse( "9.1.3" ).compareTo( JavaVersion.parse( "9.1.4" ) ) < 0 ); - assertTrue( JavaVersion.parse( "9.1.4" ).compareTo( JavaVersion.parse( "9.2.4" ) ) < 0 ); + assertTrue(JavaVersion.parse("9-ea").compareTo(JavaVersion.parse("9")) < 0); + assertTrue(JavaVersion.parse("9").compareTo(JavaVersion.parse("9.0.1")) < 0); + assertTrue(JavaVersion.parse("9.0.1").compareTo(JavaVersion.parse("9.0.2")) < 0); + assertTrue(JavaVersion.parse("9.0.2").compareTo(JavaVersion.parse("9.1.2")) < 0); + assertTrue(JavaVersion.parse("9.1.2").compareTo(JavaVersion.parse("9.1.3")) < 0); + assertTrue(JavaVersion.parse("9.1.3").compareTo(JavaVersion.parse("9.1.4")) < 0); + assertTrue(JavaVersion.parse("9.1.4").compareTo(JavaVersion.parse("9.2.4")) < 0); } - + @Test public void testIsAtLeastString() { - JavaVersion base = JavaVersion.parse( "7" ); - assertTrue( base.isAtLeast( "7" ) ); - assertFalse( base.isAtLeast( "8" ) ); + JavaVersion base = JavaVersion.parse("7"); + assertTrue(base.isAtLeast("7")); + assertFalse(base.isAtLeast("8")); } @Test public void testIsAtLeastVersion() { // e.g. can I use the module-path, which is supported since java 9 - JavaVersion j9 = JavaVersion.parse( "9" ); - assertFalse( JavaVersion.parse( "8" ).isAtLeast( j9 ) ); - assertTrue( JavaVersion.parse( "9" ).isAtLeast( j9 ) ); + JavaVersion j9 = JavaVersion.parse("9"); + assertFalse(JavaVersion.parse("8").isAtLeast(j9)); + assertTrue(JavaVersion.parse("9").isAtLeast(j9)); } @Test public void testIsBeforeString() { - JavaVersion base = JavaVersion.parse( "7" ); - assertFalse( base.isBefore( "7" ) ); - assertTrue( base.isBefore( "8" ) ); + JavaVersion base = JavaVersion.parse("7"); + assertFalse(base.isBefore("7")); + assertTrue(base.isBefore("8")); } @Test public void testIsBeforeStringVersion() { // e.g. can I use -XX:MaxPermSize, which has been removed in Java 9 - JavaVersion j9 = JavaVersion.parse( "9" ); - assertTrue( JavaVersion.parse( "8" ).isBefore( j9 ) ); - assertFalse( JavaVersion.parse( "9" ).isBefore( j9 ) ); + JavaVersion j9 = JavaVersion.parse("9"); + assertTrue(JavaVersion.parse("8").isBefore(j9)); + assertFalse(JavaVersion.parse("9").isBefore(j9)); } @Test public void testEquals() { - JavaVersion seven = JavaVersion.parse( "7" ); - JavaVersion other = JavaVersion.parse( "7" ); - - assertEquals( seven, seven ); - assertEquals( seven, other ); - assertNotEquals( seven, null ); - assertNotEquals( seven, new Object() ); - assertNotEquals( seven, JavaVersion.parse( "8" ) ); + JavaVersion seven = JavaVersion.parse("7"); + JavaVersion other = JavaVersion.parse("7"); + + assertEquals(seven, seven); + assertEquals(seven, other); + assertNotEquals(seven, null); + assertNotEquals(seven, new Object()); + assertNotEquals(seven, JavaVersion.parse("8")); } @Test public void testHascode() { - JavaVersion seven = JavaVersion.parse( "7" ); - JavaVersion other = JavaVersion.parse( "7" ); - - assertEquals( seven.hashCode(), other.hashCode() ); + JavaVersion seven = JavaVersion.parse("7"); + JavaVersion other = JavaVersion.parse("7"); + + assertEquals(seven.hashCode(), other.hashCode()); } @Test public void testToString() { - assertEquals( "7", JavaVersion.parse( "7" ).toString() ); - - assertEquals( "Raw version should not be parsed", "!@#$%^&*()", JavaVersion.parse( "!@#$%^&*()" ).toString() ); + assertEquals("7", JavaVersion.parse("7").toString()); + + assertEquals( + "Raw version should not be parsed", + "!@#$%^&*()", + JavaVersion.parse("!@#$%^&*()").toString()); } - + @Test public void testAsMajor() { - assertEquals( JavaVersion.parse( "2" ), JavaVersion.parse( "1.2" ).asMajor() ); - assertEquals( JavaVersion.parse( "5.0" ), JavaVersion.parse( "5.0" ).asMajor() ); + assertEquals(JavaVersion.parse("2"), JavaVersion.parse("1.2").asMajor()); + assertEquals(JavaVersion.parse("5.0"), JavaVersion.parse("5.0").asMajor()); // only shift one time - assertEquals( JavaVersion.parse( "1.1.2" ).asMajor().asMajor().toString(), "1.2" ); + assertEquals(JavaVersion.parse("1.1.2").asMajor().asMajor().toString(), "1.2"); } - + @Test public void testAsMajorEquals() { - JavaVersion version = JavaVersion.parse( "1.2" ); - assertEquals( version, version.asMajor() ); + JavaVersion version = JavaVersion.parse("1.2"); + assertEquals(version, version.asMajor()); } - + @Test public void testValueWithGroups() { - assertThat( JavaVersion.parse( "1" ).getValue( 1 ), is( "1" ) ); - assertThat( JavaVersion.parse( "1" ).getValue( 2 ), is( "1.0" ) ); - assertThat( JavaVersion.parse( "1" ).getValue( 3 ), is( "1.0.0" ) ); - assertThat( JavaVersion.parse( "2.1" ).getValue( 1 ), is( "2" ) ); - assertThat( JavaVersion.parse( "2.1" ).getValue( 2 ), is( "2.1" ) ); - assertThat( JavaVersion.parse( "2.1" ).getValue( 3 ), is( "2.1.0" ) ); - assertThat( JavaVersion.parse( "3.2.1" ).getValue( 1 ), is( "3" ) ); - assertThat( JavaVersion.parse( "3.2.1" ).getValue( 2 ), is( "3.2" ) ); - assertThat( JavaVersion.parse( "3.2.1" ).getValue( 3 ), is( "3.2.1" ) ); + assertThat(JavaVersion.parse("1").getValue(1), is("1")); + assertThat(JavaVersion.parse("1").getValue(2), is("1.0")); + assertThat(JavaVersion.parse("1").getValue(3), is("1.0.0")); + assertThat(JavaVersion.parse("2.1").getValue(1), is("2")); + assertThat(JavaVersion.parse("2.1").getValue(2), is("2.1")); + assertThat(JavaVersion.parse("2.1").getValue(3), is("2.1.0")); + assertThat(JavaVersion.parse("3.2.1").getValue(1), is("3")); + assertThat(JavaVersion.parse("3.2.1").getValue(2), is("3.2")); + assertThat(JavaVersion.parse("3.2.1").getValue(3), is("3.2.1")); } } diff --git a/pom.xml b/pom.xml index ff287d0..520fe33 100644 --- a/pom.xml +++ b/pom.xml @@ -13,9 +13,7 @@ pom Plexus Languages - - Plexus Languages maintains shared language features. - + Plexus Languages maintains shared language features. plexus-java @@ -24,8 +22,8 @@ scm:git:https://github.com/codehaus-plexus/plexus-languages.git scm:git:https://github.com/codehaus-plexus/plexus-languages.git - https://github.com/codehaus-plexus/plexus-languages/tree/plexus-languages HEAD + https://github.com/codehaus-plexus/plexus-languages/tree/plexus-languages github @@ -89,7 +87,7 @@
- + @@ -122,7 +120,7 @@ 9 - + From b1374ffdd5ea53f224f4e80c925fff9377de7dc1 Mon Sep 17 00:00:00 2001 From: Sylwester Lachiewicz Date: Mon, 22 May 2023 23:58:10 +0200 Subject: [PATCH 059/114] Cleanup after upgrade --- plexus-java/pom.xml | 15 --------------- pom.xml | 25 ------------------------- 2 files changed, 40 deletions(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index d440146..3b65273 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -11,11 +11,6 @@ Plexus Languages :: Java - - 1.8 - 1.8 - - org.ow2.asm @@ -67,15 +62,6 @@ - - - - org.apache.maven.plugins - maven-surefire-plugin - 3.0.0 - - - org.eclipse.sisu @@ -94,7 +80,6 @@ org.apache.maven.plugins maven-failsafe-plugin - 3.0.0 **/*Test.java diff --git a/pom.xml b/pom.xml index 520fe33..40d6a27 100644 --- a/pom.xml +++ b/pom.xml @@ -38,26 +38,12 @@ scm:git:https://github.com/codehaus-plexus/plexus-languages.git - UTF-8 - 8 2023-01-01T19:06:16Z - - org.apache.maven.plugins - maven-checkstyle-plugin - 3.2.2 - - - org.apache.maven.shared - maven-shared-resources - 5 - - - org.apache.maven.plugins maven-release-plugin @@ -65,16 +51,6 @@ true - - org.apache.maven.plugins - maven-javadoc-plugin - 3.5.0 - - - org.apache.maven.plugins - maven-jar-plugin - 3.3.0 - @@ -108,7 +84,6 @@ org.apache.maven.plugins maven-enforcer-plugin - 3.3.0 enforce-java From d1e8626509509eeede72a12184d058977af04e66 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 May 2023 23:56:36 +0000 Subject: [PATCH 060/114] Bump guice from 5.1.0 to 6.0.0 Bumps [guice](https://github.com/google/guice) from 5.1.0 to 6.0.0. - [Release notes](https://github.com/google/guice/releases) - [Commits](https://github.com/google/guice/compare/5.1.0...6.0.0) --- updated-dependencies: - dependency-name: com.google.inject:guice dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 3b65273..070999a 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -56,7 +56,7 @@ com.google.inject guice - 5.1.0 + 6.0.0 test From 242e8bea7a94921f12f07578fb314d699c52c62a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Jul 2023 23:54:26 +0000 Subject: [PATCH 061/114] Bump org.codehaus.plexus:plexus from 13 to 14 Bumps [org.codehaus.plexus:plexus](https://github.com/codehaus-plexus/plexus-pom) from 13 to 14. - [Release notes](https://github.com/codehaus-plexus/plexus-pom/releases) - [Commits](https://github.com/codehaus-plexus/plexus-pom/commits) --- updated-dependencies: - dependency-name: org.codehaus.plexus:plexus dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 40d6a27..f09f4db 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus - 13 + 14 plexus-languages From 6d7f3159e948e493a37979d9fc3adadb61146cc3 Mon Sep 17 00:00:00 2001 From: Sylwester Lachiewicz Date: Fri, 28 Jul 2023 19:22:30 +0200 Subject: [PATCH 062/114] (doc) Ignore reformat commit after parent pom 13 update --- .git-blame-ignore-revs | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .git-blame-ignore-revs diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs new file mode 100644 index 0000000..0b002f3 --- /dev/null +++ b/.git-blame-ignore-revs @@ -0,0 +1,2 @@ +# Parent 13 reformat +a3d830e666214d555be5717a6e3576e957319a60 From 336a090dd94eb34a82cb63644d69e575af5a8fdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20Sol=C3=B3rzano?= Date: Tue, 29 Aug 2023 13:42:35 +0200 Subject: [PATCH 063/114] Fix badge in README MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jorge Solórzano --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 87b6925..09dac90 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Plexus Language ![Build Status](https://github.com/codehaus-plexus/plexus-languages/workflows/GitHub%20CI/badge.svg) -![GitHub Workflow Status](https://img.shields.io/github/workflow/status/codehaus-plexus/plexus-languages/GitHub%20CI) +![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/codehaus-plexus/plexus-languages/maven.yml?branch=master) Plexus Languages: From 9d5683f05de3de4551ce6bfc25815d2ca090c7d7 Mon Sep 17 00:00:00 2001 From: Sylwester Lachiewicz Date: Tue, 29 Aug 2023 22:22:34 +0200 Subject: [PATCH 064/114] Convert tests to JUnit 5 (#166) --- plexus-java/pom.xml | 26 +- ...stractFilenameModuleNameExtractorTest.java | 24 +- .../java/jpms/BinaryModuleInfoParserTest.java | 70 +++-- .../java/jpms/CmdModuleNameExtractorTest.java | 10 +- .../java/jpms/LocationManagerIT.java | 77 +++-- .../java/jpms/LocationManagerTest.java | 292 ++++++++---------- .../MainClassModuleNameExtractorTest.java | 6 +- .../jpms/ManifestModuleNameExtractorTest.java | 18 +- .../java/jpms/SourceModuleInfoParserTest.java | 16 +- .../java/version/JavaVersionTest.java | 126 ++++---- pom.xml | 1 + 11 files changed, 316 insertions(+), 350 deletions(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 070999a..0313067 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -28,28 +28,20 @@ 1 true - - - org.hamcrest - hamcrest - 2.2 - test - - org.hamcrest - hamcrest-library - 2.2 + org.junit.jupiter + junit-jupiter test - junit - junit - 4.13.2 + org.mockito + mockito-core + 4.11.0 test org.mockito - mockito-core + mockito-junit-jupiter 4.11.0 test @@ -59,6 +51,12 @@ 6.0.0 test + + org.assertj + assertj-core + 3.24.2 + test + diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/AbstractFilenameModuleNameExtractorTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/AbstractFilenameModuleNameExtractorTest.java index 1db8b8c..76c8736 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/AbstractFilenameModuleNameExtractorTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/AbstractFilenameModuleNameExtractorTest.java @@ -21,43 +21,35 @@ import java.nio.file.Paths; -import org.junit.BeforeClass; -import org.junit.Test; +import org.junit.jupiter.api.Test; -import static org.hamcrest.CoreMatchers.not; -import static org.hamcrest.CoreMatchers.startsWith; -import static org.junit.Assert.assertEquals; -import static org.junit.Assume.assumeThat; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; public abstract class AbstractFilenameModuleNameExtractorTest { protected abstract ModuleNameExtractor getExtractor(); - @BeforeClass - public static void assume() { - assumeThat("Requires at least Java 9", System.getProperty("java.version"), not(startsWith("1."))); - } - @Test - public void testJarWithoutManifest() throws Exception { + void testJarWithoutManifest() throws Exception { String name = getExtractor().extract(Paths.get("src/test/resources/jar.empty/plexus-java-1.0.0-SNAPSHOT.jar")); assertEquals("plexus.java", name); } @Test - public void testJarWithManifest() throws Exception { + void testJarWithManifest() throws Exception { String name = getExtractor() .extract(Paths.get("src/test/resources/jar.manifest.with/plexus-java-1.0.0-SNAPSHOT.jar")); assertEquals("org.codehaus.plexus.languages.java", name); } @Test - public void testJarUnsupported() throws Exception { + void testJarUnsupported() throws Exception { String name = getExtractor().extract(Paths.get("src/test/resources/jar.unsupported/jdom-1.0.jar")); - assertEquals(null, name); + assertNull(name); } @Test - public void testJarWithSpacesInPath() throws Exception { + void testJarWithSpacesInPath() throws Exception { String name = getExtractor() .extract(Paths.get("src/test/resources/jar with spaces in path/plexus-java-1.0.0-SNAPSHOT.jar")); assertEquals("org.codehaus.plexus.languages.java", name); diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/BinaryModuleInfoParserTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/BinaryModuleInfoParserTest.java index f7aa257..5ed2f0d 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/BinaryModuleInfoParserTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/BinaryModuleInfoParserTest.java @@ -33,28 +33,29 @@ import org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor.JavaProvides; import org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor.JavaRequires; import org.codehaus.plexus.languages.java.version.JavaVersion; -import org.junit.Test; +import org.junit.jupiter.api.Test; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; -public class BinaryModuleInfoParserTest { - private BinaryModuleInfoParser parser = new BinaryModuleInfoParser(); +class BinaryModuleInfoParserTest { + private final BinaryModuleInfoParser parser = new BinaryModuleInfoParser(); @Test - public void testJarDescriptor() throws Exception { + void testJarDescriptor() throws Exception { JavaModuleDescriptor descriptor = parser.getModuleDescriptor(Paths.get("src/test/resources/jar.descriptor/asm-6.0_BETA.jar")); assertNotNull(descriptor); - assertEquals("org.objectweb.asm", descriptor.name()); - assertEquals(false, descriptor.isAutomatic()); + assertThat(descriptor.name()).isEqualTo("org.objectweb.asm"); + assertFalse(descriptor.isAutomatic()); - assertEquals(1, descriptor.requires().size()); + assertThat(descriptor.requires()).hasSize(1); assertEquals("java.base", descriptor.requires().iterator().next().name()); Set expectedExports = JavaModuleDescriptor.newAutomaticModule("_") @@ -66,17 +67,17 @@ public void testJarDescriptor() throws Exception { } @Test - public void testMultiReleaseJarDescriptor() throws Exception { + void testMultiReleaseJarDescriptor() throws Exception { JavaModuleDescriptor descriptor = parser.getModuleDescriptor( Paths.get("src/test/resources/jar.mr.descriptor/jloadr-1.0-SNAPSHOT.jar"), JavaVersion.parse("17")); assertNotNull(descriptor); assertEquals("de.adito.jloadr", descriptor.name()); - assertEquals(false, descriptor.isAutomatic()); + assertFalse(descriptor.isAutomatic()); } @Test - public void testIncompleteMultiReleaseJarDescriptor() throws Exception { + void testIncompleteMultiReleaseJarDescriptor() throws Exception { // this jar is missing the Multi-Release: true entry in the Manifest JavaModuleDescriptor descriptor = parser.getModuleDescriptor( Paths.get("src/test/resources/jar.mr.incomplete.descriptor/jloadr-1.0-SNAPSHOT.jar")); @@ -85,7 +86,7 @@ public void testIncompleteMultiReleaseJarDescriptor() throws Exception { } @Test - public void testClassicJar() throws Exception { + void testClassicJar() throws Exception { JavaModuleDescriptor descriptor = parser.getModuleDescriptor(Paths.get("src/test/resources/jar.empty/plexus-java-1.0.0-SNAPSHOT.jar")); @@ -93,15 +94,15 @@ public void testClassicJar() throws Exception { } @Test - public void testOutputDirectoryDescriptor() throws Exception { + void testOutputDirectoryDescriptor() throws Exception { JavaModuleDescriptor descriptor = parser.getModuleDescriptor(Paths.get("src/test/resources/dir.descriptor/out")); assertNotNull(descriptor); assertEquals("org.codehaus.plexus.languages.java.demo", descriptor.name()); - assertEquals(false, descriptor.isAutomatic()); + assertFalse(descriptor.isAutomatic()); - assertEquals(3, descriptor.requires().size()); + assertThat(descriptor.requires()).hasSize(3); Set expectedRequires = JavaModuleDescriptor.newAutomaticModule("_") .requires("java.base") @@ -113,19 +114,21 @@ public void testOutputDirectoryDescriptor() throws Exception { assertEquals(expectedRequires, descriptor.requires()); } - @Test(expected = NoSuchFileException.class) - public void testClassicOutputDirectory() throws Exception { - parser.getModuleDescriptor(Paths.get("src/test/resources/dir.empty/out")); + @Test + void testClassicOutputDirectory() { + assertThrows( + NoSuchFileException.class, + () -> parser.getModuleDescriptor(Paths.get("src/test/resources/dir.empty/out"))); } @Test - public void testJModDescriptor() throws Exception { + void testJModDescriptor() throws Exception { JavaModuleDescriptor descriptor = parser.getModuleDescriptor( Paths.get("src/test/resources/jmod.descriptor/first-jmod-1.0-SNAPSHOT.jmod")); assertNotNull(descriptor); assertEquals("com.corporate.project", descriptor.name()); - assertEquals(false, descriptor.isAutomatic()); + assertFalse(descriptor.isAutomatic()); assertEquals(1, descriptor.requires().size()); assertEquals("java.base", descriptor.requires().iterator().next().name()); @@ -135,13 +138,14 @@ public void testJModDescriptor() throws Exception { "com.corporate.project", descriptor.exports().iterator().next().source()); } - @Test(expected = IOException.class) - public void testInvalidFile() throws Exception { - parser.getModuleDescriptor(Paths.get("src/test/resources/nonjar/pom.xml")); + @Test + void testInvalidFile() { + assertThrows( + IOException.class, () -> parser.getModuleDescriptor(Paths.get("src/test/resources/nonjar/pom.xml"))); } @Test - public void testUses() throws Exception { + void testUses() throws Exception { try (InputStream is = Files.newInputStream(Paths.get("src/test/resources/dir.descriptor.uses/out/module-info.class"))) { JavaModuleDescriptor descriptor = parser.parse(is); @@ -157,7 +161,7 @@ public void testUses() throws Exception { } @Test - public void testProvides() throws Exception { + void testProvides() throws Exception { JavaModuleDescriptor descriptor = parser.getModuleDescriptor(Paths.get("src/test/resources/jar.service/threeten-extra-1.4.jar")); @@ -182,13 +186,13 @@ public void testProvides() throws Exception { } @Test - public void testRequires() throws Exception { + void testRequires() throws Exception { try (InputStream is = Files.newInputStream(Paths.get("src/test/resources/dir.descriptor.requires/out/module-info.class"))) { JavaModuleDescriptor descriptor = parser.parse(is); assertNotNull(descriptor); - assertThat(descriptor.requires().size(), is(5)); + assertThat(descriptor.requires()).hasSize(5); Set expectedRequires = JavaModuleDescriptor.newAutomaticModule("_") .requires("java.base") @@ -196,7 +200,7 @@ public void testRequires() throws Exception { .requires(Collections.singleton(JavaRequires.JavaModifier.STATIC), "mod_r_s") .requires(Collections.singleton(JavaRequires.JavaModifier.TRANSITIVE), "mod_r_t") .requires( - new HashSet(Arrays.asList( + new HashSet<>(Arrays.asList( JavaRequires.JavaModifier.STATIC, JavaRequires.JavaModifier.TRANSITIVE)), "mod_r_s_t") .build() diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/CmdModuleNameExtractorTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/CmdModuleNameExtractorTest.java index e0536c1..6527f47 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/CmdModuleNameExtractorTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/CmdModuleNameExtractorTest.java @@ -21,15 +21,15 @@ import java.nio.file.Path; -import org.junit.Test; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertEquals; +import static org.assertj.core.api.Assertions.assertThat; -public class CmdModuleNameExtractorTest { +class CmdModuleNameExtractorTest { @Test - public void testMethodCount() throws Exception { + void testMethodCount() throws Exception { // ensure that both implementations are in sync - assertEquals(2, CmdModuleNameExtractor.class.getDeclaredMethods().length); + assertThat(CmdModuleNameExtractor.class.getDeclaredMethods().length).isEqualTo(2); // if these don't exist, a NoSuchMethodException is thrown CmdModuleNameExtractor.class.getDeclaredMethod("main", String[].class); diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerIT.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerIT.java index ee243b2..934eb2c 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerIT.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerIT.java @@ -24,17 +24,16 @@ import java.util.Arrays; import java.util.Collections; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledOnJre; +import org.junit.jupiter.api.condition.JRE; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.not; -import static org.hamcrest.CoreMatchers.startsWith; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.junit.Assume.assumeThat; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; @@ -44,8 +43,9 @@ * * @author Robert Scholte */ -@RunWith(org.mockito.junit.MockitoJUnitRunner.class) -public class LocationManagerIT { +@DisabledOnJre(value = JRE.JAVA_8, disabledReason = "Requires Java 9+ Module System") +@ExtendWith(MockitoExtension.class) +class LocationManagerIT { @Mock private BinaryModuleInfoParser asmParser; @@ -56,13 +56,8 @@ public class LocationManagerIT { final Path mockModuleInfoJava = Paths.get("src/test/resources/mock/module-info.java"); - @BeforeClass - public static void assume() { - assumeThat("Requires at least Java 9", System.getProperty("java.version"), not(startsWith("1."))); - } - - @Before - public void onSetup() { + @BeforeEach + void onSetup() { locationManager = new LocationManager(qdoxParser) { @Override ModuleInfoParser getBinaryModuleInfoParser(Path jdkHome) { @@ -72,7 +67,7 @@ ModuleInfoParser getBinaryModuleInfoParser(Path jdkHome) { } @Test - public void testManifestWithoutReflectRequires() throws Exception { + void testManifestWithoutReflectRequires() throws Exception { Path abc = Paths.get("src/test/resources/manifest.without/out"); JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule("base").requires("any").build(); @@ -82,15 +77,15 @@ public void testManifestWithoutReflectRequires() throws Exception { ResolvePathsResult result = locationManager.resolvePaths(request); - assertThat(result.getPathExceptions().size(), is(0)); - assertThat(result.getMainModuleDescriptor(), is(descriptor)); - assertThat(result.getPathElements().size(), is(1)); - assertThat(result.getModulepathElements().size(), is(0)); - assertThat(result.getClasspathElements().size(), is(1)); + assertThat(result.getPathExceptions()).hasSize(0); + assertThat(result.getMainModuleDescriptor()).isEqualTo(descriptor); + assertThat(result.getPathElements()).hasSize(1); + assertThat(result.getModulepathElements()).hasSize(0); + assertThat(result.getClasspathElements()).hasSize(1); } @Test - public void testEmptyWithReflectRequires() throws Exception { + void testEmptyWithReflectRequires() throws Exception { Path abc = Paths.get("src/test/resources/empty/out"); JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule("base").requires("a.b.c").build(); @@ -100,34 +95,32 @@ public void testEmptyWithReflectRequires() throws Exception { ResolvePathsResult result = locationManager.resolvePaths(request); - assertThat(result.getPathExceptions().size(), is(0)); - assertThat(result.getMainModuleDescriptor(), is(descriptor)); - assertThat(result.getPathElements().size(), is(1)); - assertThat(result.getModulepathElements().size(), is(0)); - assertThat(result.getClasspathElements().size(), is(1)); + assertThat(result.getPathExceptions()).hasSize(0); + assertThat(result.getMainModuleDescriptor()).isEqualTo(descriptor); + assertThat(result.getPathElements()).hasSize(1); + assertThat(result.getModulepathElements()).hasSize(0); + assertThat(result.getClasspathElements()).hasSize(1); } - @Test(expected = RuntimeException.class) - public void testResolvePathWithException() throws Exception { - assumeThat("Requires at least Java 9", System.getProperty("java.version"), not(startsWith("1."))); - - Path p = Paths.get("src/test/resources/jar.empty.invalid.name/101-1.0.0-SNAPSHOT.jar"); - ResolvePathRequest request = ResolvePathRequest.ofPath(p); + @Test + void testResolvePathWithException() { + assertThrows(RuntimeException.class, () -> { + Path p = Paths.get("src/test/resources/jar.empty.invalid.name/101-1.0.0-SNAPSHOT.jar"); + ResolvePathRequest request = ResolvePathRequest.ofPath(p); - locationManager.resolvePath(request); + locationManager.resolvePath(request); + }); } @Test - public void testClassicJarNameStartsWithNumber() throws Exception { - assumeThat("Requires at least Java 9", System.getProperty("java.version"), not(startsWith("1."))); - + void testClassicJarNameStartsWithNumber() throws Exception { Path p = Paths.get("src/test/resources/jar.empty.invalid.name/101-1.0.0-SNAPSHOT.jar"); ResolvePathsRequest request = ResolvePathsRequest.ofPaths(Arrays.asList(p)).setMainModuleDescriptor(mockModuleInfoJava); ResolvePathsResult result = locationManager.resolvePaths(request); - assertThat(result.getPathExceptions().size(), is(1)); - assertThat(result.getClasspathElements().size(), is(1)); + assertThat(result.getPathExceptions()).hasSize(1); + assertThat(result.getClasspathElements()).hasSize(1); } } diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerTest.java index 09de41a..acd825d 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerTest.java @@ -27,31 +27,27 @@ import java.util.HashSet; import org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor.JavaRequires.JavaModifier; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.nullValue; -import static org.hamcrest.MatcherAssert.assertThat; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -@RunWith(org.mockito.junit.MockitoJUnitRunner.class) -public class LocationManagerTest { - @Mock +class LocationManagerTest { private BinaryModuleInfoParser asmParser; - @Mock private SourceModuleInfoParser qdoxParser; private LocationManager locationManager; final Path mockModuleInfoJava = Paths.get("src/test/resources/mock/module-info.java"); - @Before - public void onSetup() { + @BeforeEach + void onSetup() { + asmParser = mock(BinaryModuleInfoParser.class); + qdoxParser = mock(SourceModuleInfoParser.class); locationManager = new LocationManager(qdoxParser) { @Override ModuleInfoParser getBinaryModuleInfoParser(Path jdkHome) { @@ -61,18 +57,18 @@ ModuleInfoParser getBinaryModuleInfoParser(Path jdkHome) { } @Test - public void testNoPaths() throws Exception { + void testNoPaths() throws Exception { ResolvePathsResult result = locationManager.resolvePaths(ResolvePathsRequest.ofFiles(Collections.emptyList())); - assertThat(result.getMainModuleDescriptor(), nullValue(JavaModuleDescriptor.class)); - assertThat(result.getPathElements().size(), is(0)); - assertThat(result.getModulepathElements().size(), is(0)); - assertThat(result.getClasspathElements().size(), is(0)); - assertThat(result.getPathExceptions().size(), is(0)); + assertThat(result.getMainModuleDescriptor()).isNull(); + assertThat(result.getPathElements()).hasSize(0); + assertThat(result.getModulepathElements()).hasSize(0); + assertThat(result.getClasspathElements()).hasSize(0); + assertThat(result.getPathExceptions()).hasSize(0); } @Test - public void testWithUnknownRequires() throws Exception { + void testWithUnknownRequires() throws Exception { JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule("base") .requires("java.base") .requires("jdk.net") @@ -83,15 +79,15 @@ public void testWithUnknownRequires() throws Exception { ResolvePathsResult result = locationManager.resolvePaths(request); - assertThat(result.getMainModuleDescriptor(), is(descriptor)); - assertThat(result.getPathElements().size(), is(0)); - assertThat(result.getModulepathElements().size(), is(0)); - assertThat(result.getClasspathElements().size(), is(0)); - assertThat(result.getPathExceptions().size(), is(0)); + assertThat(result.getMainModuleDescriptor()).isEqualTo(descriptor); + assertThat(result.getPathElements()).hasSize(0); + assertThat(result.getModulepathElements()).hasSize(0); + assertThat(result.getClasspathElements()).hasSize(0); + assertThat(result.getPathExceptions()).hasSize(0); } @Test - public void testManifestWithReflectRequires() throws Exception { + void testManifestWithReflectRequires() throws Exception { Path abc = Paths.get("src/test/resources/dir.manifest.with/out"); JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule("base") .requires("auto.by.manifest") @@ -102,16 +98,16 @@ public void testManifestWithReflectRequires() throws Exception { ResolvePathsResult result = locationManager.resolvePaths(request); - assertThat(result.getMainModuleDescriptor(), is(descriptor)); - assertThat(result.getPathElements().size(), is(1)); - assertThat(result.getModulepathElements().size(), is(1)); - assertThat(result.getModulepathElements().get(abc), is(ModuleNameSource.MANIFEST)); - assertThat(result.getClasspathElements().size(), is(0)); - assertThat(result.getPathExceptions().size(), is(0)); + assertThat(result.getMainModuleDescriptor()).isEqualTo(descriptor); + assertThat(result.getPathElements()).hasSize(1); + assertThat(result.getModulepathElements()).hasSize(1); + assertThat(result.getModulepathElements().get(abc)).isEqualTo(ModuleNameSource.MANIFEST); + assertThat(result.getClasspathElements()).hasSize(0); + assertThat(result.getPathExceptions()).hasSize(0); } @Test - public void testDirDescriptorWithReflectRequires() throws Exception { + void testDirDescriptorWithReflectRequires() throws Exception { Path abc = Paths.get("src/test/resources/dir.descriptor/out"); JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule("base") .requires("dir.descriptor") @@ -125,16 +121,16 @@ public void testDirDescriptorWithReflectRequires() throws Exception { ResolvePathsResult result = locationManager.resolvePaths(request); - assertThat(result.getMainModuleDescriptor(), is(descriptor)); - assertThat(result.getPathElements().size(), is(1)); - assertThat(result.getModulepathElements().size(), is(1)); - assertThat(result.getModulepathElements().get(abc), is(ModuleNameSource.MODULEDESCRIPTOR)); - assertThat(result.getClasspathElements().size(), is(0)); - assertThat(result.getPathExceptions().size(), is(0)); + assertThat(result.getMainModuleDescriptor()).isEqualTo(descriptor); + assertThat(result.getPathElements()).hasSize(1); + assertThat(result.getModulepathElements()).hasSize(1); + assertThat(result.getModulepathElements().get(abc)).isEqualTo(ModuleNameSource.MODULEDESCRIPTOR); + assertThat(result.getClasspathElements()).hasSize(0); + assertThat(result.getPathExceptions()).hasSize(0); } @Test - public void testJarWithAsmRequires() throws Exception { + void testJarWithAsmRequires() throws Exception { Path abc = Paths.get("src/test/resources/jar.descriptor/asm-6.0_BETA.jar"); JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule("base") .requires("org.objectweb.asm") @@ -147,17 +143,16 @@ public void testJarWithAsmRequires() throws Exception { .thenReturn(JavaModuleDescriptor.newModule("org.objectweb.asm").build()); ResolvePathsResult result = locationManager.resolvePaths(request); - - assertThat(result.getMainModuleDescriptor(), is(descriptor)); - assertThat(result.getPathElements().size(), is(1)); - assertThat(result.getModulepathElements().size(), is(1)); - assertThat(result.getModulepathElements().get(abc), is(ModuleNameSource.MODULEDESCRIPTOR)); - assertThat(result.getClasspathElements().size(), is(0)); - assertThat(result.getPathExceptions().size(), is(0)); + assertThat(result.getMainModuleDescriptor()).isEqualTo(descriptor); + assertThat(result.getPathElements()).hasSize(1); + assertThat(result.getModulepathElements()).hasSize(1); + assertThat(result.getModulepathElements().get(abc)).isEqualTo(ModuleNameSource.MODULEDESCRIPTOR); + assertThat(result.getClasspathElements()).hasSize(0); + assertThat(result.getPathExceptions()).hasSize(0); } @Test - public void testIdenticalModuleNames() throws Exception { + void testIdenticalModuleNames() throws Exception { Path pj1 = Paths.get("src/test/resources/jar.empty/plexus-java-1.0.0-SNAPSHOT.jar"); Path pj2 = Paths.get("src/test/resources/jar.empty.2/plexus-java-2.0.0-SNAPSHOT.jar"); JavaModuleDescriptor descriptor = @@ -174,18 +169,16 @@ public void testIdenticalModuleNames() throws Exception { JavaModuleDescriptor.newAutomaticModule("plexus.java").build()); ResolvePathsResult result = locationManager.resolvePaths(request); - - assertThat(result.getMainModuleDescriptor(), is(descriptor)); - assertThat(result.getPathElements().size(), is(2)); - assertThat(result.getModulepathElements().size(), is(1)); - assertThat(result.getModulepathElements().containsKey(pj1), is(true)); - assertThat(result.getModulepathElements().containsKey(pj2), is(false)); - assertThat(result.getClasspathElements().size(), is(0)); - assertThat(result.getPathExceptions().size(), is(0)); + assertThat(result.getMainModuleDescriptor()).isEqualTo(descriptor); + assertThat(result.getPathElements()).hasSize(2); + assertThat(result.getModulepathElements()).containsOnlyKeys(pj1); + assertThat(result.getModulepathElements()).doesNotContainKey(pj2); + assertThat(result.getClasspathElements()).hasSize(0); + assertThat(result.getPathExceptions()).hasSize(0); } @Test - public void testNonJar() throws Exception { + void testNonJar() throws Exception { Path p = Paths.get("src/test/resources/nonjar/pom.xml"); ResolvePathsRequest request = @@ -193,11 +186,11 @@ public void testNonJar() throws Exception { ResolvePathsResult result = locationManager.resolvePaths(request); - assertThat(result.getPathExceptions().size(), is(1)); + assertThat(result.getPathExceptions()).hasSize(1); } @Test - public void testAdditionalModules() throws Exception { + void testAdditionalModules() throws Exception { Path p = Paths.get("src/test/resources/mock/jar0.jar"); JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule("base").build(); @@ -211,16 +204,15 @@ public void testAdditionalModules() throws Exception { JavaModuleDescriptor.newAutomaticModule("plexus.java").build()); ResolvePathsResult result = locationManager.resolvePaths(request); - - assertThat(result.getMainModuleDescriptor(), is(descriptor)); - assertThat(result.getPathElements().size(), is(1)); - assertThat(result.getModulepathElements().size(), is(1)); - assertThat(result.getClasspathElements().size(), is(0)); - assertThat(result.getPathExceptions().size(), is(0)); + assertThat(result.getMainModuleDescriptor()).isEqualTo(descriptor); + assertThat(result.getPathElements()).hasSize(1); + assertThat(result.getModulepathElements()).hasSize(1); + assertThat(result.getClasspathElements()).hasSize(0); + assertThat(result.getPathExceptions()).hasSize(0); } @Test - public void testResolvePath() throws Exception { + void testResolvePath() throws Exception { Path abc = Paths.get("src/test/resources/mock/jar0.jar"); ResolvePathRequest request = ResolvePathRequest.ofPath(abc); @@ -229,14 +221,13 @@ public void testResolvePath() throws Exception { ResolvePathResult result = locationManager.resolvePath(request); - assertThat( - result.getModuleDescriptor(), - is(JavaModuleDescriptor.newModule("org.objectweb.asm").build())); - assertThat(result.getModuleNameSource(), is(ModuleNameSource.MODULEDESCRIPTOR)); + assertThat(result.getModuleDescriptor()) + .isEqualTo(JavaModuleDescriptor.newModule("org.objectweb.asm").build()); + assertThat(result.getModuleNameSource()).isEqualTo(ModuleNameSource.MODULEDESCRIPTOR); } @Test - public void testNoMatchingProviders() throws Exception { + void testNoMatchingProviders() throws Exception { Path abc = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java Path def = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file ResolvePathsRequest request = @@ -250,14 +241,14 @@ public void testNoMatchingProviders() throws Exception { .build()); ResolvePathsResult result = locationManager.resolvePaths(request); - assertThat(result.getPathElements().size(), is(1)); - assertThat(result.getModulepathElements().size(), is(0)); - assertThat(result.getClasspathElements().size(), is(1)); - assertThat(result.getPathExceptions().size(), is(0)); + assertThat(result.getPathElements()).hasSize(1); + assertThat(result.getModulepathElements()).hasSize(0); + assertThat(result.getClasspathElements()).hasSize(1); + assertThat(result.getPathExceptions()).hasSize(0); } @Test - public void testMainModuleDescriptorWithProviders() throws Exception { + void testMainModuleDescriptorWithProviders() throws Exception { Path abc = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java Path def = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file ResolvePathsRequest request = @@ -271,14 +262,14 @@ public void testMainModuleDescriptorWithProviders() throws Exception { .build()); ResolvePathsResult result = locationManager.resolvePaths(request); - assertThat(result.getPathElements().size(), is(1)); - assertThat(result.getModulepathElements().size(), is(1)); - assertThat(result.getClasspathElements().size(), is(0)); - assertThat(result.getPathExceptions().size(), is(0)); + assertThat(result.getPathElements()).hasSize(1); + assertThat(result.getModulepathElements()).hasSize(1); + assertThat(result.getClasspathElements()).hasSize(0); + assertThat(result.getPathExceptions()).hasSize(0); } @Test - public void testMainModuleDescriptorWithProvidersDontIncludeProviders() throws Exception { + void testMainModuleDescriptorWithProvidersDontIncludeProviders() throws Exception { Path abc = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java Path def = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file ResolvePathsRequest request = ResolvePathsRequest.ofPaths(def).setMainModuleDescriptor(abc); @@ -291,14 +282,14 @@ public void testMainModuleDescriptorWithProvidersDontIncludeProviders() throws E .build()); ResolvePathsResult result = locationManager.resolvePaths(request); - assertThat(result.getPathElements().size(), is(1)); - assertThat(result.getModulepathElements().size(), is(0)); - assertThat(result.getClasspathElements().size(), is(1)); - assertThat(result.getPathExceptions().size(), is(0)); + assertThat(result.getPathElements()).hasSize(1); + assertThat(result.getModulepathElements()).hasSize(0); + assertThat(result.getClasspathElements()).hasSize(1); + assertThat(result.getPathExceptions()).hasSize(0); } @Test - public void testTransitiveProviders() throws Exception { + void testTransitiveProviders() throws Exception { Path abc = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java Path def = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file Path ghi = Paths.get("src/test/resources/mock/jar1.jar"); // any existing file @@ -317,14 +308,14 @@ public void testTransitiveProviders() throws Exception { .thenReturn(JavaModuleDescriptor.newModule("ghi").uses("tool").build()); ResolvePathsResult result = locationManager.resolvePaths(request); - assertThat(result.getPathElements().size(), is(2)); - assertThat(result.getModulepathElements().size(), is(2)); - assertThat(result.getClasspathElements().size(), is(0)); - assertThat(result.getPathExceptions().size(), is(0)); + assertThat(result.getPathElements()).hasSize(2); + assertThat(result.getModulepathElements()).hasSize(2); + assertThat(result.getClasspathElements()).hasSize(0); + assertThat(result.getPathExceptions()).hasSize(0); } @Test - public void testDontIncludeProviders() throws Exception { + void testDontIncludeProviders() throws Exception { Path abc = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java Path def = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file Path ghi = Paths.get("src/test/resources/mock/jar1.jar"); // any existing file @@ -342,14 +333,14 @@ public void testDontIncludeProviders() throws Exception { .thenReturn(JavaModuleDescriptor.newModule("ghi").uses("tool").build()); ResolvePathsResult result = locationManager.resolvePaths(request); - assertThat(result.getPathElements().size(), is(2)); - assertThat(result.getModulepathElements().size(), is(1)); - assertThat(result.getClasspathElements().size(), is(1)); - assertThat(result.getPathExceptions().size(), is(0)); + assertThat(result.getPathElements()).hasSize(2); + assertThat(result.getModulepathElements()).hasSize(1); + assertThat(result.getClasspathElements()).hasSize(1); + assertThat(result.getPathExceptions()).hasSize(0); } @Test - public void testAllowAdditionalModulesWithoutMainDescriptor() throws Exception { + void testAllowAdditionalModulesWithoutMainDescriptor() throws Exception { Path def = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file Path ghi = Paths.get("src/test/resources/mock/jar1.jar"); // any existing file ResolvePathsRequest request = @@ -361,15 +352,14 @@ public void testAllowAdditionalModulesWithoutMainDescriptor() throws Exception { .thenReturn(JavaModuleDescriptor.newModule("ghi").build()); ResolvePathsResult result = locationManager.resolvePaths(request); - - assertThat(result.getPathElements().size(), is(2)); - assertThat(result.getModulepathElements().size(), is(1)); - assertThat(result.getClasspathElements().size(), is(1)); - assertThat(result.getPathExceptions().size(), is(0)); + assertThat(result.getPathElements()).hasSize(2); + assertThat(result.getModulepathElements()).hasSize(1); + assertThat(result.getClasspathElements()).hasSize(1); + assertThat(result.getPathExceptions()).hasSize(0); } @Test - public void testReuseModuleDescriptor() throws Exception { + void testReuseModuleDescriptor() throws Exception { Path def = Paths.get("src/test/resources/mock/jar0.jar"); ResolvePathRequest request1 = ResolvePathRequest.ofPath(def); @@ -383,30 +373,30 @@ public void testReuseModuleDescriptor() throws Exception { ResolvePathsResult result2 = locationManager.resolvePaths(request2); - assertThat(result1.getModuleDescriptor(), is(result2.getMainModuleDescriptor())); + assertThat(result1.getModuleDescriptor()).isEqualTo(result2.getMainModuleDescriptor()); } @Test - public void testParseModuleDescriptor() throws Exception { + void testParseModuleDescriptor() throws Exception { Path descriptorPath = Paths.get("src/test/resources/src.dir/module-info.java"); when(qdoxParser.fromSourcePath(descriptorPath)) .thenReturn(JavaModuleDescriptor.newModule("a.b.c").build()); ResolvePathResult result = locationManager.parseModuleDescriptor(descriptorPath); - assertThat(result.getModuleNameSource(), is(ModuleNameSource.MODULEDESCRIPTOR)); - assertThat(result.getModuleDescriptor().name(), is("a.b.c")); + assertThat(result.getModuleNameSource()).isEqualTo(ModuleNameSource.MODULEDESCRIPTOR); + assertThat(result.getModuleDescriptor().name()).isEqualTo("a.b.c"); locationManager.parseModuleDescriptor(descriptorPath.toFile()); - assertThat(result.getModuleNameSource(), is(ModuleNameSource.MODULEDESCRIPTOR)); - assertThat(result.getModuleDescriptor().name(), is("a.b.c")); + assertThat(result.getModuleNameSource()).isEqualTo(ModuleNameSource.MODULEDESCRIPTOR); + assertThat(result.getModuleDescriptor().name()).isEqualTo("a.b.c"); locationManager.parseModuleDescriptor(descriptorPath.toString()); - assertThat(result.getModuleNameSource(), is(ModuleNameSource.MODULEDESCRIPTOR)); - assertThat(result.getModuleDescriptor().name(), is("a.b.c")); + assertThat(result.getModuleNameSource()).isEqualTo(ModuleNameSource.MODULEDESCRIPTOR); + assertThat(result.getModuleDescriptor().name()).isEqualTo("a.b.c"); } @Test - public void testTransitiveStatic() throws Exception { + void testTransitiveStatic() throws Exception { Path moduleA = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java Path moduleB = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file Path moduleC = Paths.get("src/test/resources/mock/jar1.jar"); // any existing file @@ -425,14 +415,14 @@ public void testTransitiveStatic() throws Exception { .thenReturn(JavaModuleDescriptor.newModule("moduleC").build()); ResolvePathsResult result = locationManager.resolvePaths(request); - assertThat(result.getPathElements().size(), is(2)); - assertThat(result.getModulepathElements().size(), is(1)); - assertThat(result.getClasspathElements().size(), is(1)); - assertThat(result.getPathExceptions().size(), is(0)); + assertThat(result.getPathElements()).hasSize(2); + assertThat(result.getModulepathElements()).hasSize(1); + assertThat(result.getClasspathElements()).hasSize(1); + assertThat(result.getPathExceptions()).hasSize(0); } @Test - public void testDirectStatic() throws Exception { + void testDirectStatic() throws Exception { Path moduleA = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java Path moduleB = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file Path moduleC = Paths.get("src/test/resources/mock/jar1.jar"); // any existing file @@ -456,20 +446,14 @@ public void testDirectStatic() throws Exception { .thenReturn(JavaModuleDescriptor.newModule("moduleD").build()); ResolvePathsResult result = locationManager.resolvePaths(request); - assertThat(result.getPathElements().size(), is(3)); - assertThat( - "content: " + result.getModulepathElements(), - result.getModulepathElements().size(), - is(2)); - assertThat(result.getModulepathElements().containsKey(moduleB), is(true)); - assertThat(result.getModulepathElements().containsKey(moduleD), is(true)); - assertThat(result.getClasspathElements().size(), is(1)); - assertThat(result.getClasspathElements().contains(moduleC), is(true)); - assertThat(result.getPathExceptions().size(), is(0)); + assertThat(result.getPathElements()).hasSize(3); + assertThat(result.getModulepathElements()).containsOnlyKeys(moduleB, moduleD); + assertThat(result.getClasspathElements()).containsOnly(moduleC); + assertThat(result.getPathExceptions()).hasSize(0); } @Test - public void testDuplicateModule() throws Exception { + void testDuplicateModule() throws Exception { Path moduleA = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java Path moduleB = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file Path moduleC = Paths.get("src/test/resources/mock/jar1.jar"); // any existing file @@ -487,16 +471,15 @@ public void testDuplicateModule() throws Exception { .thenReturn(JavaModuleDescriptor.newModule("anonymous").build()); ResolvePathsResult result = locationManager.resolvePaths(request); - assertThat(result.getPathElements().size(), is(2)); - assertThat(result.getModulepathElements().size(), is(1)); - assertThat(result.getModulepathElements().containsKey(moduleB), is(true)); + assertThat(result.getPathElements()).hasSize(2); + assertThat(result.getModulepathElements()).containsOnlyKeys(moduleB); // with current default the duplicate will be ignored - assertThat(result.getClasspathElements().size(), is(0)); - assertThat(result.getPathExceptions().size(), is(0)); + assertThat(result.getClasspathElements()).hasSize(0); + assertThat(result.getPathExceptions()).hasSize(0); } @Test - public void testStaticTransitive() throws Exception { + void testStaticTransitive() throws Exception { Path moduleA = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java Path moduleB = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file Path moduleC = Paths.get("src/test/resources/mock/jar1.jar"); // any existing file @@ -520,23 +503,17 @@ public void testStaticTransitive() throws Exception { .thenReturn(JavaModuleDescriptor.newModule("moduleD").build()); ResolvePathsResult result = locationManager.resolvePaths(request); - assertThat(result.getPathElements().size(), is(3)); - assertThat( - "modulepathelements:" + result.getModulepathElements(), - result.getModulepathElements().size(), - is(2)); - assertThat(result.getModulepathElements().containsKey(moduleB), is(true)); - assertThat(result.getModulepathElements().containsKey(moduleC), is(true)); - assertThat(result.getClasspathElements().size(), is(1)); - assertThat(result.getClasspathElements().contains(moduleD), is(true)); - assertThat(result.getPathExceptions().size(), is(0)); + assertThat(result.getPathElements()).hasSize(3); + assertThat(result.getModulepathElements()).containsOnlyKeys(moduleB, moduleC); + assertThat(result.getClasspathElements()).containsOnly(moduleD); + assertThat(result.getPathExceptions()).hasSize(0); } - @Test /** - * test case for https://issues.apache.org/jira/browse/MCOMPILER-481 + * test case for MCOMPILER-481 */ - public void includeDeeperRequiresStatic() throws Exception { + @Test + void includeDeeperRequiresStatic() throws Exception { Path moduleA = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java Path moduleB = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file Path moduleC = Paths.get("src/test/resources/mock/jar1.jar"); // any existing file @@ -555,19 +532,14 @@ public void includeDeeperRequiresStatic() throws Exception { .thenReturn(JavaModuleDescriptor.newModule("moduleC").build()); ResolvePathsResult result = locationManager.resolvePaths(request); - assertThat( - "modulepathelements:" + result.getModulepathElements(), - result.getModulepathElements().size(), - is(2)); - assertThat(result.getModulepathElements().containsKey(moduleB), is(true)); - assertThat(result.getModulepathElements().containsKey(moduleC), is(true)); + assertThat(result.getModulepathElements()).containsOnlyKeys(moduleB, moduleC); } - @Test /** - * test case for https://issues.apache.org/jira/browse/MCOMPILER-482 + * test case for MCOMPILER-482 */ - public void includeDeeperRequiresStaticTransitive() throws Exception { + @Test + void includeDeeperRequiresStaticTransitive() throws Exception { Path moduleA = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java core Path moduleB = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file Path moduleC = Paths.get("src/test/resources/mock/jar1.jar"); // any existing file @@ -592,12 +564,6 @@ public void includeDeeperRequiresStaticTransitive() throws Exception { .thenReturn(JavaModuleDescriptor.newModule("moduleD").build()); ResolvePathsResult result = locationManager.resolvePaths(request); - assertThat( - "modulepathelements:" + result.getModulepathElements(), - result.getModulepathElements().size(), - is(3)); - assertThat(result.getModulepathElements().containsKey(moduleB), is(true)); - assertThat(result.getModulepathElements().containsKey(moduleC), is(true)); - assertThat(result.getModulepathElements().containsKey(moduleD), is(true)); + assertThat(result.getModulepathElements()).containsOnlyKeys(moduleB, moduleC, moduleD); } } diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/MainClassModuleNameExtractorTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/MainClassModuleNameExtractorTest.java index 57d2b1a..f3d3662 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/MainClassModuleNameExtractorTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/MainClassModuleNameExtractorTest.java @@ -24,11 +24,15 @@ import java.nio.file.Paths; import java.util.Collections; +import org.junit.jupiter.api.condition.DisabledOnJre; +import org.junit.jupiter.api.condition.JRE; + +@DisabledOnJre(value = JRE.JAVA_8, disabledReason = "Requires Java 9+ Module System") public class MainClassModuleNameExtractorTest extends AbstractFilenameModuleNameExtractorTest { @Override protected ModuleNameExtractor getExtractor() { return new ModuleNameExtractor() { - MainClassModuleNameExtractor extractor = + final MainClassModuleNameExtractor extractor = new MainClassModuleNameExtractor(Paths.get(System.getProperty("java.home"))); @Override diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/ManifestModuleNameExtractorTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/ManifestModuleNameExtractorTest.java index 35e21d6..7360585 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/ManifestModuleNameExtractorTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/ManifestModuleNameExtractorTest.java @@ -20,38 +20,38 @@ */ import java.nio.file.Paths; -import org.junit.Test; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; -public class ManifestModuleNameExtractorTest { +class ManifestModuleNameExtractorTest { private ManifestModuleNameExtractor extractor = new ManifestModuleNameExtractor(); @Test - public void testNoManifestInJar() throws Exception { + void testNoManifestInJar() throws Exception { assertNull(extractor.extract(Paths.get("src/test/resources/jar.name/plexus-java-1.0.0-SNAPSHOT.jar"))); } @Test - public void testManifestInJar() throws Exception { + void testManifestInJar() throws Exception { assertEquals( "org.codehaus.plexus.languages.java", extractor.extract(Paths.get("src/test/resources/jar.manifest.with/plexus-java-1.0.0-SNAPSHOT.jar"))); } @Test - public void testNoManifestInDir() throws Exception { + void testNoManifestInDir() throws Exception { assertNull(extractor.extract(Paths.get("src/test/resources/empty/out"))); } @Test - public void testEmptyManifestInDir() throws Exception { + void testEmptyManifestInDir() throws Exception { assertNull(extractor.extract(Paths.get("src/test/resources/manifest.without/out"))); } @Test - public void testManifestInDir() throws Exception { + void testManifestInDir() throws Exception { assertEquals("auto.by.manifest", extractor.extract(Paths.get("src/test/resources/dir.manifest.with/out"))); } } diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/SourceModuleInfoParserTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/SourceModuleInfoParserTest.java index ef85a95..eecd015 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/SourceModuleInfoParserTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/SourceModuleInfoParserTest.java @@ -28,18 +28,18 @@ import org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor.JavaExports; import org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor.JavaProvides; import org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor.JavaRequires; -import org.junit.Test; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; -public class SourceModuleInfoParserTest { - private SourceModuleInfoParser parser = new SourceModuleInfoParser(); +class SourceModuleInfoParserTest { + private final SourceModuleInfoParser parser = new SourceModuleInfoParser(); @Test - public void test() throws Exception { + void test() throws Exception { JavaModuleDescriptor moduleDescriptor = parser.fromSourcePath(Paths.get("src/test/resources/src.dir/module-info.java")); assertEquals("a.b.c", moduleDescriptor.name()); diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/version/JavaVersionTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/version/JavaVersionTest.java index 3e1cbd0..de1db99 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/version/JavaVersionTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/version/JavaVersionTest.java @@ -19,68 +19,79 @@ * under the License. */ -import org.junit.Test; +import org.junit.jupiter.api.Test; -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotEquals; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; /* * Parsing is lazy, only triggered when comparing */ -public class JavaVersionTest { +class JavaVersionTest { @Test - public void testParse() throws Exception { - assertTrue(JavaVersion.parse("1.4").compareTo(JavaVersion.parse("1.4.2")) < 0); - assertTrue(JavaVersion.parse("1.4").compareTo(JavaVersion.parse("1.5")) < 0); - assertTrue(JavaVersion.parse("1.8").compareTo(JavaVersion.parse("9")) < 0); - - assertTrue(JavaVersion.parse("1.4").compareTo(JavaVersion.parse("1.4")) == 0); - assertTrue(JavaVersion.parse("1.4.2").compareTo(JavaVersion.parse("1.4.2")) == 0); - assertTrue(JavaVersion.parse("9").compareTo(JavaVersion.parse("9")) == 0); - - assertTrue(JavaVersion.parse("1.4.2").compareTo(JavaVersion.parse("1.4")) > 0); - assertTrue(JavaVersion.parse("1.5").compareTo(JavaVersion.parse("1.4")) > 0); - assertTrue(JavaVersion.parse("9").compareTo(JavaVersion.parse("1.8")) > 0); + void testParse() { + assertThat(JavaVersion.parse("1.4").compareTo(JavaVersion.parse("1.4.2"))) + .isLessThan(0); + assertThat(JavaVersion.parse("1.4").compareTo(JavaVersion.parse("1.5"))).isLessThan(0); + assertThat(JavaVersion.parse("1.8").compareTo(JavaVersion.parse("9"))).isLessThan(0); + + assertThat(JavaVersion.parse("1.4").compareTo(JavaVersion.parse("1.4"))).isEqualTo(0); + assertThat(JavaVersion.parse("1.4.2").compareTo(JavaVersion.parse("1.4.2"))) + .isEqualTo(0); + assertThat(JavaVersion.parse("9").compareTo(JavaVersion.parse("9"))).isEqualTo(0); + + assertThat(JavaVersion.parse("1.4.2").compareTo(JavaVersion.parse("1.4"))) + .isGreaterThan(0); + assertThat(JavaVersion.parse("1.5").compareTo(JavaVersion.parse("1.4"))).isGreaterThan(0); + assertThat(JavaVersion.parse("9").compareTo(JavaVersion.parse("1.8"))).isGreaterThan(0); } @Test - public void testVersionNamingExamples() { + void testVersionNamingExamples() { // All GA (FCS) versions are ordered based on the standard dot-notation. For example: 1.3.0 < 1.3.0_01 < 1.3.1 < // 1.3.1_01. // Source: http://www.oracle.com/technetwork/java/javase/versioning-naming-139433.html - assertTrue(JavaVersion.parse("1.3.0").compareTo(JavaVersion.parse("1.3.0_01")) < 0); - assertTrue(JavaVersion.parse("1.3.0_01").compareTo(JavaVersion.parse("1.3.1")) < 0); - assertTrue(JavaVersion.parse("1.3.1").compareTo(JavaVersion.parse("1.3.1_01")) < 0); + assertThat(JavaVersion.parse("1.3.0").compareTo(JavaVersion.parse("1.3.0_01"))) + .isLessThan(0); + assertThat(JavaVersion.parse("1.3.0_01").compareTo(JavaVersion.parse("1.3.1"))) + .isLessThan(0); + assertThat(JavaVersion.parse("1.3.1").compareTo(JavaVersion.parse("1.3.1_01"))) + .isLessThan(0); - assertTrue(JavaVersion.parse("1.3.0").compareTo(JavaVersion.parse("1.3.0-b24")) < 0); + assertThat(JavaVersion.parse("1.3.0").compareTo(JavaVersion.parse("1.3.0-b24"))) + .isLessThan(0); } @Test - public void testJEP223Short() { + void testJEP223Short() { // http://openjdk.java.net/jeps/223 - assertTrue(JavaVersion.parse("9-ea").compareTo(JavaVersion.parse("9")) < 0); - assertTrue(JavaVersion.parse("9").compareTo(JavaVersion.parse("9.0.1")) < 0); - assertTrue(JavaVersion.parse("9.0.1").compareTo(JavaVersion.parse("9.0.2")) < 0); - assertTrue(JavaVersion.parse("9.0.2").compareTo(JavaVersion.parse("9.1.2")) < 0); - assertTrue(JavaVersion.parse("9.1.2").compareTo(JavaVersion.parse("9.1.3")) < 0); - assertTrue(JavaVersion.parse("9.1.3").compareTo(JavaVersion.parse("9.1.4")) < 0); - assertTrue(JavaVersion.parse("9.1.4").compareTo(JavaVersion.parse("9.2.4")) < 0); + assertThat(JavaVersion.parse("9-ea").compareTo(JavaVersion.parse("9"))).isLessThan(0); + assertThat(JavaVersion.parse("9").compareTo(JavaVersion.parse("9.0.1"))).isLessThan(0); + assertThat(JavaVersion.parse("9.0.1").compareTo(JavaVersion.parse("9.0.2"))) + .isLessThan(0); + assertThat(JavaVersion.parse("9.0.2").compareTo(JavaVersion.parse("9.1.2"))) + .isLessThan(0); + assertThat(JavaVersion.parse("9.1.2").compareTo(JavaVersion.parse("9.1.3"))) + .isLessThan(0); + assertThat(JavaVersion.parse("9.1.3").compareTo(JavaVersion.parse("9.1.4"))) + .isLessThan(0); + assertThat(JavaVersion.parse("9.1.4").compareTo(JavaVersion.parse("9.2.4"))) + .isLessThan(0); } @Test - public void testIsAtLeastString() { + void testIsAtLeastString() { JavaVersion base = JavaVersion.parse("7"); assertTrue(base.isAtLeast("7")); assertFalse(base.isAtLeast("8")); } @Test - public void testIsAtLeastVersion() { + void testIsAtLeastVersion() { // e.g. can I use the module-path, which is supported since java 9 JavaVersion j9 = JavaVersion.parse("9"); assertFalse(JavaVersion.parse("8").isAtLeast(j9)); @@ -88,14 +99,14 @@ public void testIsAtLeastVersion() { } @Test - public void testIsBeforeString() { + void testIsBeforeString() { JavaVersion base = JavaVersion.parse("7"); assertFalse(base.isBefore("7")); assertTrue(base.isBefore("8")); } @Test - public void testIsBeforeStringVersion() { + void testIsBeforeStringVersion() { // e.g. can I use -XX:MaxPermSize, which has been removed in Java 9 JavaVersion j9 = JavaVersion.parse("9"); assertTrue(JavaVersion.parse("8").isBefore(j9)); @@ -103,19 +114,19 @@ public void testIsBeforeStringVersion() { } @Test - public void testEquals() { + void testEquals() { JavaVersion seven = JavaVersion.parse("7"); JavaVersion other = JavaVersion.parse("7"); - assertEquals(seven, seven); + assertThat(seven).isEqualTo(seven); assertEquals(seven, other); - assertNotEquals(seven, null); + assertNotEquals(null, seven); assertNotEquals(seven, new Object()); assertNotEquals(seven, JavaVersion.parse("8")); } @Test - public void testHascode() { + void testHascode() { JavaVersion seven = JavaVersion.parse("7"); JavaVersion other = JavaVersion.parse("7"); @@ -123,39 +134,36 @@ public void testHascode() { } @Test - public void testToString() { + void testToString() { assertEquals("7", JavaVersion.parse("7").toString()); - assertEquals( - "Raw version should not be parsed", - "!@#$%^&*()", - JavaVersion.parse("!@#$%^&*()").toString()); + assertEquals("!@#$%^&*()", JavaVersion.parse("!@#$%^&*()").toString(), "Raw version should not be parsed"); } @Test - public void testAsMajor() { + void testAsMajor() { assertEquals(JavaVersion.parse("2"), JavaVersion.parse("1.2").asMajor()); assertEquals(JavaVersion.parse("5.0"), JavaVersion.parse("5.0").asMajor()); // only shift one time - assertEquals(JavaVersion.parse("1.1.2").asMajor().asMajor().toString(), "1.2"); + assertEquals("1.2", JavaVersion.parse("1.1.2").asMajor().asMajor().toString()); } @Test - public void testAsMajorEquals() { + void testAsMajorEquals() { JavaVersion version = JavaVersion.parse("1.2"); assertEquals(version, version.asMajor()); } @Test - public void testValueWithGroups() { - assertThat(JavaVersion.parse("1").getValue(1), is("1")); - assertThat(JavaVersion.parse("1").getValue(2), is("1.0")); - assertThat(JavaVersion.parse("1").getValue(3), is("1.0.0")); - assertThat(JavaVersion.parse("2.1").getValue(1), is("2")); - assertThat(JavaVersion.parse("2.1").getValue(2), is("2.1")); - assertThat(JavaVersion.parse("2.1").getValue(3), is("2.1.0")); - assertThat(JavaVersion.parse("3.2.1").getValue(1), is("3")); - assertThat(JavaVersion.parse("3.2.1").getValue(2), is("3.2")); - assertThat(JavaVersion.parse("3.2.1").getValue(3), is("3.2.1")); + void testValueWithGroups() { + assertThat(JavaVersion.parse("1").getValue(1)).isEqualTo("1"); + assertThat(JavaVersion.parse("1").getValue(2)).isEqualTo("1.0"); + assertThat(JavaVersion.parse("1").getValue(3)).isEqualTo("1.0.0"); + assertThat(JavaVersion.parse("2.1").getValue(1)).isEqualTo("2"); + assertThat(JavaVersion.parse("2.1").getValue(2)).isEqualTo("2.1"); + assertThat(JavaVersion.parse("2.1").getValue(3)).isEqualTo("2.1.0"); + assertThat(JavaVersion.parse("3.2.1").getValue(1)).isEqualTo("3"); + assertThat(JavaVersion.parse("3.2.1").getValue(2)).isEqualTo("3.2"); + assertThat(JavaVersion.parse("3.2.1").getValue(3)).isEqualTo("3.2.1"); } } diff --git a/pom.xml b/pom.xml index f09f4db..2ddc848 100644 --- a/pom.xml +++ b/pom.xml @@ -37,6 +37,7 @@ + 5.10.0 scm:git:https://github.com/codehaus-plexus/plexus-languages.git 2023-01-01T19:06:16Z From 3f3832c10b837983452950de5caa39aadab816a7 Mon Sep 17 00:00:00 2001 From: Sylwester Lachiewicz Date: Tue, 29 Aug 2023 22:17:59 +0200 Subject: [PATCH 065/114] Run CI with Java 21 --- .github/workflows/maven.yml | 4 ++++ pom.xml | 23 +++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 2490a17..c84a53b 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -27,6 +27,10 @@ jobs: os: [ubuntu-latest,windows-latest, macOS-latest] java: [8, 11, 17] jdk: [temurin, zulu, adopt-openj9] + include: + - os: ubuntu-latest + java: 21 + jdk: corretto fail-fast: false runs-on: ${{ matrix.os }} diff --git a/pom.xml b/pom.xml index 2ddc848..02cf2dc 100644 --- a/pom.xml +++ b/pom.xml @@ -104,5 +104,28 @@ + + + + java21+ + + [21,) + + + + + com.diffplug.spotless + spotless-maven-plugin + + + + 2.35.0 + + + + + + + From 537321d55ff62215b060caad5375d02d05444328 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Sep 2023 23:53:43 +0000 Subject: [PATCH 066/114] Bump actions/checkout from 3 to 4 Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/maven.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index c84a53b..a96d12c 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -36,7 +36,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-java@v3 with: distribution: ${{ matrix.jdk }} From 5c06f1b86f25aac12207cfe17b210e78be2ddb6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20Sol=C3=B3rzano?= Date: Tue, 29 Aug 2023 13:47:53 +0200 Subject: [PATCH 067/114] Add java bytecode class file version detection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jorge Solórzano --- .../java/version/JavaClassfileVersion.java | 141 ++++++++++++++++++ .../version/JavaClassfileVersionParser.java | 55 +++++++ .../languages/java/version/JavaVersion.java | 2 +- .../java/version/JavaClassVersionTest.java | 79 ++++++++++ .../classfile.version/helloworld-10.class | Bin 0 -> 424 bytes .../classfile.version/helloworld-11.class | Bin 0 -> 424 bytes .../classfile.version/helloworld-12.class | Bin 0 -> 424 bytes .../classfile.version/helloworld-13.class | Bin 0 -> 424 bytes .../classfile.version/helloworld-14.class | Bin 0 -> 424 bytes .../classfile.version/helloworld-15.class | Bin 0 -> 424 bytes .../classfile.version/helloworld-16.class | Bin 0 -> 424 bytes .../classfile.version/helloworld-17.class | Bin 0 -> 424 bytes .../classfile.version/helloworld-18.class | Bin 0 -> 424 bytes .../classfile.version/helloworld-19.class | Bin 0 -> 424 bytes .../classfile.version/helloworld-20.class | Bin 0 -> 424 bytes .../classfile.version/helloworld-21.class | Bin 0 -> 424 bytes .../classfile.version/helloworld-22.class | Bin 0 -> 424 bytes .../classfile.version/helloworld-8.class | Bin 0 -> 424 bytes .../classfile.version/helloworld-9.class | Bin 0 -> 424 bytes .../helloworld-preview.class | Bin 0 -> 489 bytes 20 files changed, 276 insertions(+), 1 deletion(-) create mode 100644 plexus-java/src/main/java/org/codehaus/plexus/languages/java/version/JavaClassfileVersion.java create mode 100644 plexus-java/src/main/java/org/codehaus/plexus/languages/java/version/JavaClassfileVersionParser.java create mode 100644 plexus-java/src/test/java/org/codehaus/plexus/languages/java/version/JavaClassVersionTest.java create mode 100644 plexus-java/src/test/resources/classfile.version/helloworld-10.class create mode 100644 plexus-java/src/test/resources/classfile.version/helloworld-11.class create mode 100644 plexus-java/src/test/resources/classfile.version/helloworld-12.class create mode 100644 plexus-java/src/test/resources/classfile.version/helloworld-13.class create mode 100644 plexus-java/src/test/resources/classfile.version/helloworld-14.class create mode 100644 plexus-java/src/test/resources/classfile.version/helloworld-15.class create mode 100644 plexus-java/src/test/resources/classfile.version/helloworld-16.class create mode 100644 plexus-java/src/test/resources/classfile.version/helloworld-17.class create mode 100644 plexus-java/src/test/resources/classfile.version/helloworld-18.class create mode 100644 plexus-java/src/test/resources/classfile.version/helloworld-19.class create mode 100644 plexus-java/src/test/resources/classfile.version/helloworld-20.class create mode 100644 plexus-java/src/test/resources/classfile.version/helloworld-21.class create mode 100644 plexus-java/src/test/resources/classfile.version/helloworld-22.class create mode 100644 plexus-java/src/test/resources/classfile.version/helloworld-8.class create mode 100644 plexus-java/src/test/resources/classfile.version/helloworld-9.class create mode 100644 plexus-java/src/test/resources/classfile.version/helloworld-preview.class diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/version/JavaClassfileVersion.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/version/JavaClassfileVersion.java new file mode 100644 index 0000000..e909f8f --- /dev/null +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/version/JavaClassfileVersion.java @@ -0,0 +1,141 @@ +package org.codehaus.plexus.languages.java.version; + +import java.io.IOException; +import java.io.UncheckedIOException; +import java.nio.file.Files; +import java.nio.file.Path; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/** + * Reads the bytecode of a Java class to detect the major, minor and Java + * version that was compiled. + * + * @author Jorge Solórzano + */ +public final class JavaClassfileVersion { + + private final int major; + private final int minor; + + JavaClassfileVersion(int major, int minor) { + if (major < 45) { + throw new IllegalArgumentException("Java class major version must be 45 or above."); + } + this.major = major; + this.minor = minor; + } + + /** + * Reads the bytecode of a Java class file and returns the + * {@link JavaClassfileVersion}. + * + * @param bytes {@code byte[]} of the Java class file + * @return the {@link JavaClassfileVersion} of the byte array + */ + public static JavaClassfileVersion of(byte[] bytes) { + return JavaClassfileVersionParser.of(bytes); + } + + /** + * Reads the bytecode of a Java class file and returns the + * {@link JavaClassfileVersion}. + * + * @param path {@link Path} of the Java class file + * @return the {@link JavaClassfileVersion} of the path java class + */ + public static JavaClassfileVersion of(Path path) { + try { + byte[] readAllBytes = Files.readAllBytes(path); + return of(readAllBytes); + } catch (IOException ex) { + throw new UncheckedIOException(ex); + } + } + + /** + * JavaVersion of the class file version detected. + * + * @return JavaVersion based on the major version of the class file. + */ + public JavaVersion javaVersion() { + int javaVer = major - 44; + String javaVersion = javaVer < 9 ? "1." + javaVer : Integer.toString(javaVer); + + return JavaVersion.parse(javaVersion); + } + + /** + * Returns the major version of the parsed classfile. + * + * @return the major classfile version + */ + public int majorVersion() { + return major; + } + + /** + * Returns the minor version of the parsed classfile. + * + * @return the minor classfile version + */ + public int minorVersion() { + return minor; + } + + /** + * Returns if the classfile use preview features. + * + * @return {@code true} if the classfile use preview features. + */ + public boolean isPreview() { + return minor == 65535; + } + + /** + * Returns a String representation of the Java class file version, e.g. + * {@code 65.0 (Java 21)}. + * + * @return String representation of the Java class file version + */ + @Override + public String toString() { + return major + "." + minor + " (Java " + javaVersion() + ")"; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + major; + result = prime * result + minor; + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (!(obj instanceof JavaClassfileVersion)) return false; + JavaClassfileVersion other = (JavaClassfileVersion) obj; + if (major != other.major) return false; + if (minor != other.minor) return false; + return true; + } +} diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/version/JavaClassfileVersionParser.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/version/JavaClassfileVersionParser.java new file mode 100644 index 0000000..a994180 --- /dev/null +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/version/JavaClassfileVersionParser.java @@ -0,0 +1,55 @@ +package org.codehaus.plexus.languages.java.version; + +import java.io.ByteArrayInputStream; +import java.io.DataInputStream; +import java.io.IOException; +import java.io.UncheckedIOException; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/** + * This class is intented to be package-private and consumed by + * {@link JavaClassfileVersion}. + * + * @author Jorge Solórzano + */ +final class JavaClassfileVersionParser { + + private JavaClassfileVersionParser() {} + + /** + * Reads the bytecode of a Java class file and returns the {@link JavaClassfileVersion}. + * + * @param in {@code byte[]} of the Java class file + * @return the {@link JavaClassfileVersion} of the input stream + */ + public static JavaClassfileVersion of(byte[] bytes) { + try (final DataInputStream data = new DataInputStream(new ByteArrayInputStream(bytes))) { + if (0xCAFEBABE != data.readInt()) { + throw new IOException("Invalid java class file header"); + } + int minor = data.readUnsignedShort(); + int major = data.readUnsignedShort(); + return new JavaClassfileVersion(major, minor); + } catch (IOException ex) { + throw new UncheckedIOException(ex); + } + } +} diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/version/JavaVersion.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/version/JavaVersion.java index b80e7cc..245527e 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/version/JavaVersion.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/version/JavaVersion.java @@ -60,7 +60,7 @@ private JavaVersion(String rawVersion, boolean isMajor) { * Actual parsing is done when calling {@link #compareTo(JavaVersion)} * * @param s the version string, never {@code null} - * @return the version wrapped in a JavadocVersion + * @return the version wrapped in a JavaVersion */ public static JavaVersion parse(String s) { return new JavaVersion(s, !s.startsWith("1.")); diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/version/JavaClassVersionTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/version/JavaClassVersionTest.java new file mode 100644 index 0000000..eaec9c5 --- /dev/null +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/version/JavaClassVersionTest.java @@ -0,0 +1,79 @@ +package org.codehaus.plexus.languages.java.version; + +import java.io.IOException; +import java.io.UncheckedIOException; +import java.nio.file.DirectoryStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import java.util.stream.StreamSupport; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class JavaClassVersionTest { + + @ParameterizedTest + @MethodSource("provideClassFiles") + void testFilesClassVersions(Path filePath) { + String fileName = filePath.getFileName().toString(); + int javaVersion = Integer.valueOf(fileName.substring(fileName.indexOf("-") + 1, fileName.length() - 6)); + JavaClassfileVersion classVersion = JavaClassfileVersion.of(filePath); + assertEquals(javaVersion + 44, classVersion.majorVersion()); + assertEquals(0, classVersion.minorVersion()); + assertEquals(JavaVersion.parse("" + javaVersion), classVersion.javaVersion()); + } + + static Stream provideClassFiles() { + List paths; + try (DirectoryStream directoryStream = + Files.newDirectoryStream(Paths.get("src/test/resources/classfile.version/"), "*-[0-9]?.class")) { + paths = StreamSupport.stream(directoryStream.spliterator(), false) + .filter(Files::isRegularFile) + .collect(Collectors.toList()); + } catch (IOException ex) { + throw new UncheckedIOException(ex); + } + return paths.stream(); + } + + @Test + void testJavaClassPreview() { + Path previewFile = Paths.get("src/test/resources/classfile.version/helloworld-preview.class"); + JavaClassfileVersion previewClass = JavaClassfileVersion.of(previewFile); + assertTrue(previewClass.isPreview()); + assertEquals(20 + 44, previewClass.majorVersion()); + assertEquals(JavaVersion.parse("20"), previewClass.javaVersion()); + } + + @Test + void testJavaClassVersionMajor45orAbove() { + assertThrows( + IllegalArgumentException.class, + () -> new JavaClassfileVersion(44, 0), + "Java class major version must be 45 or above."); + } + + @Test + void equalsContract() { + JavaClassfileVersion javaClassVersion = new JavaClassfileVersion(65, 0); + JavaClassfileVersion previewFeature = new JavaClassfileVersion(65, 65535); + assertNotEquals(javaClassVersion, previewFeature); + assertNotEquals(javaClassVersion.hashCode(), previewFeature.hashCode()); + + JavaClassfileVersion javaClassVersionOther = new JavaClassfileVersion(65, 0); + assertEquals(javaClassVersion, javaClassVersionOther); + assertEquals(javaClassVersion.hashCode(), javaClassVersionOther.hashCode()); + assertEquals(javaClassVersion.javaVersion(), javaClassVersionOther.javaVersion()); + assertEquals(javaClassVersion.javaVersion(), previewFeature.javaVersion()); + } +} diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-10.class b/plexus-java/src/test/resources/classfile.version/helloworld-10.class new file mode 100644 index 0000000000000000000000000000000000000000..925195184622cdaaa6512d6b86a80beb688ca775 GIT binary patch literal 424 zcmZvZ&q~8U5XQf4({2-^sjaPl3%wLt59a2j;zbaVqC%t>Pf5GfEt_45iQ;4FLBWF$ z;6sVC^-zTFVdi7@o8Jzz-#?#U0FKe|P(qo*@lipQp+1kF;!wqU7G5WFG07RKCsND& zl%d=oj9t{=a(F)0;QzBnFORuM$z=*^YK;~kX~LUK>O9Ib5vRi%HW<7Mp_J)f(nB8V z*yL#VXkv?@xuS=GKUjj&1nvJ(7vm99>e+BG=4cc2-a?;Erlt(enVAZPU?jD;D$+z` zw{fDV;-s-8PP>1%3PhC16xl?aOKT36$Rj%#x@gg|?6Hy71%_=>9m>pB4nM$NNighC mwAWU<*u@@YYwc01t-5dEjrDf~OS}CDz@hzC$g)qmgo9s7B3C^C literal 0 HcmV?d00001 diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-11.class b/plexus-java/src/test/resources/classfile.version/helloworld-11.class new file mode 100644 index 0000000000000000000000000000000000000000..e7b2672567091a4aacbc3242a7ca129b6f1ab332 GIT binary patch literal 424 zcmZvZ&q~8U5XQf4({2-^sjaPl3%wLt59a8h;zbaVqC%t>Pf5GfEt_45iQ;4FLBWF$ z;6sVC^-zTFVdi7@o8Jzz-#?#U0FKe|P(qo*@lipQp+1kF;!wqU7G5WFG07RKCsND& zl%d=oj9t{=a(F)0;QzBnFORuM$z=*^YK;~kX~LUK>O9Ib5vRi%HW<7Mp_J)f(nB8V z*yL#VXkv?@xuS=GKUjj&1nvJ(7vm99>e+BG=4cc2-a?;Erlt(enVAZPU?jD;D$+z` zw{fDV;-s-8PP>1%3PhC16xl?aOKT36$Rj%#x@gg|?6Hy71%_=>9m>pB4nM$NNighC mwAWU<*u@@YYwc01t-5dEjrDf~OS}CDz@hzC$g)qmgo9s8!&g24 literal 0 HcmV?d00001 diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-12.class b/plexus-java/src/test/resources/classfile.version/helloworld-12.class new file mode 100644 index 0000000000000000000000000000000000000000..5cd0678436376f05f81cc95c845ca0233b151629 GIT binary patch literal 424 zcmZvZ&q~8U5XQf4({2-^sjaPl3%wLt59TUVya*yvREYHADQTCwWwR?WQG6^tD0uJz zd?<0Y9*WRC%zVs#^V?ze`{(luz%e==N+@$UJ}Rg()aUV29I9B)!s}!%COJd(L~5Cz zGL-v+v5Oj94$sFL{D1c78kVSM)IO2TM?zp#4AUVmv}hJsS?j9BqQ$Tj;aN)Re(FGgHA3jHDJ_tvzbBRrd|NvHp%=X}2E%IJDmiS@ubnaPSLFWLG}` literal 0 HcmV?d00001 diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-13.class b/plexus-java/src/test/resources/classfile.version/helloworld-13.class new file mode 100644 index 0000000000000000000000000000000000000000..e95b0b4788dcc2c34c9698b94d66e4b52ad04904 GIT binary patch literal 424 zcmZvZ&q~8U5XQf4({2-^sjaPl3%wLt59TZtFM@~^6(YTOO4_Av+3ZS86dy|u3Lbm_ zA4;69haz+jGas|x{C1fA{`vd@aEy+J63QHoj|!>`^?Cdhhbq>y@H&}`NzPC`ky_@b z4CVe{?4kyj!}GBQ|DQd2dCWyhE>lobYqS7K6W(M}=TV-CI33oo!Qfp8rA+sd9`aDf zCP%|Z6I%?;6+I06!4i}vX#bD87>|%r&xV6BN1LGc7W!;5HDz$l%v3N0BdNtzktQO$ zjT1!`Cyga>+Wos#AfiO3$R^@kT63^O9@)XrMT?eYkBzi0Fl>|RP-eDr_yP7xf?mVMGC9Q*=L1y?`- literal 0 HcmV?d00001 diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-14.class b/plexus-java/src/test/resources/classfile.version/helloworld-14.class new file mode 100644 index 0000000000000000000000000000000000000000..c0d06625d48538abba2dd081e3348480cac32894 GIT binary patch literal 424 zcmZvZ&q~8U5XQf4({2-^sjaPl3%wLt59V&giy$IJg-9=+l6I+EHoFoN#mCZvf(IYK zhZ1M&p$Of>%*X6Eza3`3e?Gqe9HZl*gffTYqk<|!eI7r>p^Eh^yiVp~k~36Kq?Y+9 zL%BZ~yQsnC@O-Sn|7VY09&?eB%M{eq8ZAK5gg2Sgd6Z`&PKPyYFnAY2Dbu~Ahdk7= z$0FG z<3v%#Nn=TzcK>b_h$xXMvWYmC)*LL6M|LoD(V}J9VF}n>+cAbcKZ>4L;J0eWuJ5j2ft9JS3v*( literal 0 HcmV?d00001 diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-15.class b/plexus-java/src/test/resources/classfile.version/helloworld-15.class new file mode 100644 index 0000000000000000000000000000000000000000..1b62db66e892f44689aae50bc7d3b7534ed7da04 GIT binary patch literal 424 zcmZvZ&q~8U5XQf4({2-^sjaPl3%v-b2m1gKFM@~^6(YTO+O$jEvdKzJ6dy|u3Lbm_ zA4;69haz+jGas|x{C1fA{`vd@5TWOxf+~mOqlP*|b1t65P>XCfyiVqFQZUp{RHlkk zhH5w%yJ*1W@O-Sn|7VY19t)Y0%aqjA87)A{3~zFk6>*VEkwy({FnAYIYtz4^hdeZ~ z$OcR;k zibPYzNrfU#H@sT~B1&w^d?L@4H3v)Nu^kM3bZA-j*huRF!#1fNWo9c!A7HN}7+kIyZs2jq5am#vQN5#gI`idS3&>) literal 0 HcmV?d00001 diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-16.class b/plexus-java/src/test/resources/classfile.version/helloworld-16.class new file mode 100644 index 0000000000000000000000000000000000000000..bade14e5e1a9b3658cab6731183cb1071d5f2244 GIT binary patch literal 424 zcmZvZ&q~8U5XQf4({2-^sjaPl3%wLt59R?{ya*yvREYHAY11xs%Vr}nQG6^tD0uJz zd?<0Y9*WRC%zVs#^V?ze`{(luzz7`=C6qZF9~D#?>I?BCLM_ZZyp9)gnln^K%BcL5 zq1+!#T-4xlcs@4Z|FcIgkGV|9l@`?08ZSXA4R11K@+i-wNQO0RF?bhJ>$H1G4|%9# zo1@{Qi5-UKnjQxJUsk=EK2+qfO9z3w=&AJ!5dr(wSrk#>&X6B8g>o zD`HI*ClQJ`?f%_55K*GE$fojKS#z*Lp4h?AMT?eYkBzi0Fzk}*P-eDr`~mh#f?mP67d9Q^`Q=vPAk literal 0 HcmV?d00001 diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-17.class b/plexus-java/src/test/resources/classfile.version/helloworld-17.class new file mode 100644 index 0000000000000000000000000000000000000000..461c9cd3c677aa24e7d152dd79eb79590ed764c6 GIT binary patch literal 424 zcmZvZ&q~8U5XQf4({2-^sjaPl3%wLt59R@?UIY;-Dnxqml(b9Tve}iGC_a`R6g>C< zK9o3H4@Kx6Wht(14pppY;dL?>lboS?EVax} z8Or^^*hLL4hv#Dr{y%&4@|cU1T&AF=)@T8eCcMd{&Z9gNaXPGFgTcEHN}28@J>;Q| zO^$|-Cbk%wD|#6CgC!_U(EcBFF&-hMo(%_Mjy6H>E%e!BYRcf8nWKOIQRusiC07b literal 0 HcmV?d00001 diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-18.class b/plexus-java/src/test/resources/classfile.version/helloworld-18.class new file mode 100644 index 0000000000000000000000000000000000000000..5ae0ca175d7aa3c611baea9d0c7874501b1b1be4 GIT binary patch literal 424 zcmZvZ&q~8U5XQf4({2-^sjaPl3%wLt59R?Xy$B*wREYHADQTCwWwR?WQG6^tD0uJz zd?<0Y9*WRC%zVs#^V?ze`{(luzz7`=C6qZF9~D#?>Wla(4ppq@;dQbQ)10AtDz(f< z4CVe{;-UtZ!}GBL|DQd2dCWyhE>lobYrF(W6W(M}=TV-CI33oo#o%2CrA+sd9`aDf zHb=up6FUseH9ZXc!4i}vX#bD89FLGv&xeBvN1LGc7W!;5HDhqj%uFx@W2wbektQO$ zjT1!`Cyga>+WotAAfiO3$fn|4T63^Mp4h?AMT?eYkBzi0Fzk}*P-eDr`~mh#f?mP67d9Q^`UDpy4S literal 0 HcmV?d00001 diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-19.class b/plexus-java/src/test/resources/classfile.version/helloworld-19.class new file mode 100644 index 0000000000000000000000000000000000000000..bd24b66f44e7bfe938aadae86b92de61e813c10d GIT binary patch literal 424 zcmZvZ&q~8U5XQf4({2-^sjaPl3%wLt59R?XdJsgUs1WJJQ_?PV%Vt+%qWD;PQ1IXb z_)y|(JrtpPnE9Cf=C{M__s{1SfKzlllu+hyd{j_nsL$i4I8?Eoh1bbkOmc?mvD7j@ zVJPn(!u*I*;;9#Obhx4F>N*C}p~r^pJ-- zHaQwTn%H7!uIORl50;=bLHmEy#dw62dNv%4Iobrhx6o&ksVReVW~PE67)dRziZl_~ zZJa2oIB6`2)9&A`0ud!LMK%%V(wc)M^2iQ`E?TrKdu*h2fnl3ehcdI3!w;}m5)3;O m?X}e|cCkm8kVSM)IO2TM?zp#4AUVmv}hJsS?j9BqQ$Tj;aN)Re(FGgHA3jHDJ_tvzbBRrd|NvHp%=X}2E%IJDmiS@ubnaPSLSY*$AB literal 0 HcmV?d00001 diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-21.class b/plexus-java/src/test/resources/classfile.version/helloworld-21.class new file mode 100644 index 0000000000000000000000000000000000000000..e57d1b96074bf49da2d45d54c114f4205d8bfe5b GIT binary patch literal 424 zcmZvZ&q~8U5XQf4({2-^sjaPl3%wLt59R?Xf(Rl~REYHADQTCwWwR?WQG6^tD0uJz zd?<0Y9*WRC%zVs#^V?ze`{(luz$rQ&N+@$UJ}Rg()aUV29I9B)!s}!%COJd(SZbM{ zFqHd)v5Oj94$sFL{D1c78kVSM)IO2TM?zp#4AUVmv}hJsS?j9BqQ$Tj;aN)Re(FGgHA3jHDJ_tvzbBRrd|NvHp%=X}2E%IJDmiS@ubnaPSLU4Od72 literal 0 HcmV?d00001 diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-22.class b/plexus-java/src/test/resources/classfile.version/helloworld-22.class new file mode 100644 index 0000000000000000000000000000000000000000..ff268d8e47c0dc0eb526d1dadc2129dbb1d5b5bb GIT binary patch literal 424 zcmZvZ&q~8U5XQf4({2-^sjaPl3%wLt59R?X9u!2Rs1WJJQ_?PV%Vt+%qWD;PQ1IXb z_)y|(JrtpPnE9Cf=C{M__s{1SfKzlllu+hyd{j_nsL$i4I8?Eoh1bbkOmc?mvD7j@ zVJPn(!u*I*;;9#Obhx4F>N*C}p~r^pJ-- zHaQwTn%H7!uIORl50;=bLHmEy#dw62dNv%4Iobrhx6o&ksVReVW~PE67)dRziZl_~ zZJa2oIB6`2)9&A`0ud!LMK%%V(wc)M^2iQ`E?TrKdu*h2fnl3ehcdI3!w;}m5)3;O m?X}e|cCkmn;zbaVqC%t>Pf5GfEt_45iQ;4FLBWF$ z;6sVC^-zTFVdi7@o8Jzz-#?#U0FKe|P(qo*@lipQp+1kF;!wqU7G5WFG07RKCsND& zl%d=oj9t{=a(F)0;QzBnFORuM$z=*^YK;~kX~LUK>O9Ib5vRi%HW<7Mp_J)f(nB8V z*yL#VXkv?@xuS=GKUjj&1nvJ(7vm99>e+BG=4cc2-a?;Erlt(enVAZPU?jD;D$+z` zw{fDV;-s-8PP>1%3PhC16xl?aOKT36$Rj%#x@gg|?6Hy71%_=>9m>pB4nM$NNighC mwAWU<*u@@YYwc01t-5dEjrDf~OS}CDz@hzC$g)qmgo9s3;8!~U literal 0 HcmV?d00001 diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-9.class b/plexus-java/src/test/resources/classfile.version/helloworld-9.class new file mode 100644 index 0000000000000000000000000000000000000000..06772b55cf41a9aa7ff1f8675d0d3b4725c308e2 GIT binary patch literal 424 zcmZvZ&q~8U5XQf4({2-^sjaPl3%wLt59Z{l;zbaVqC%t>Pf5GfEt_45iQ;4FLBWF$ z;6sVC^-zTFVdi7@o8Jzz-#?#U0FKe|P(qo*@lipQp+1kF;!wqU7G5WFG07RKCsND& zl%d=oj9t{=a(F)0;QzBnFORuM$z=*^YK;~kX~LUK>O9Ib5vRi%HW<7Mp_J)f(nB8V z*yL#VXkv?@xuS=GKUjj&1nvJ(7vm99>e+BG=4cc2-a?;Erlt(enVAZPU?jD;D$+z` zw{fDV;-s-8PP>1%3PhC16xl?aOKT36$Rj%#x@gg|?6Hy71%_=>9m>pB4nM$NNighC mwAWU<*u@@YYwc01t-5dEjrDf~OS}CDz@hzC$g)qmgo9s5fmb{L literal 0 HcmV?d00001 diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-preview.class b/plexus-java/src/test/resources/classfile.version/helloworld-preview.class new file mode 100644 index 0000000000000000000000000000000000000000..7b77d720801fc837b49d57b9d013380575fb9b5c GIT binary patch literal 489 zcmZ`$%T59@6g`Du>Wrf(D&i|qLkzf(55O2BiHQl31q2ta3REa5GfA1z?{cMa;RpCp z;;paI1#NQA$?eI>xwmicFR!y1&avwwgDi&=AP1LWWi0MRO^a|?YxTymA2Yb8Dpc_q zL$*@w`dEO+;Rjem@K4?u87T$~UUb)0CQgKAII2{eso|HRe32+Ukfz-F(bYMY8T^sd zI(mqVCKIO-4J1RpsX}?3OnTCEL{C%4nFtj!6f3uXjN7qM;jmuql1n>EOkZ9qE6%5u zCpHE{a21BqG_;sb<&pvb literal 0 HcmV?d00001 From 605780b9d0d9505826ac577108b8da7b6682c7f4 Mon Sep 17 00:00:00 2001 From: rfscholte Date: Sat, 16 Sep 2023 19:57:01 +0200 Subject: [PATCH 068/114] Move comments to proper position and improve --- .../plexus/languages/java/jpms/LocationManager.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/LocationManager.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/LocationManager.java index 9a51ae6..a5b2f50 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/LocationManager.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/LocationManager.java @@ -188,8 +188,7 @@ public String extract(Path path) throws IOException { continue; } - // Consider strategies how to handle duplicate modules by name - // For now, just ignore it + // in case of identical module names, first one wins if (moduleDescriptor != null && moduleNameSources.putIfAbsent(moduleDescriptor.name(), source) == null) { availableNamedModules.put(moduleDescriptor.name(), moduleDescriptor); @@ -249,12 +248,15 @@ public String extract(Path path) throws IOException { request.isIncludeStatic()); } - // in case of identical module names, first one wins Set collectedModules = new HashSet<>(requiredNamedModules.size()); for (Entry entry : pathElements.entrySet()) { if (entry.getValue() != null && requiredNamedModules.contains(entry.getValue().name())) { + // Consider strategies how to handle duplicate modules by name + // For now only add first on modulePath, just ignore others, + // This has effectively the same result as putting it on the modulePath, but might better help + // analyzing issues. if (collectedModules.add(entry.getValue().name())) { result.getModulepathElements() .put( From 3a1f22b6022bab708d720f5f9ac91ecc03949eb3 Mon Sep 17 00:00:00 2001 From: "Henning P. Schmiedehausen" Date: Thu, 17 Aug 2023 18:29:28 -0700 Subject: [PATCH 069/114] Fail on duplicate modules on the module path When resolving the module path, no module id is allowed to exist multiple times. The location manager used to drop duplicates silently which led to hard to understand error messages when a plugin using plexus-java dropped a dependency without any notice. This change enforces uniqueness of module names on the module path and will add an exception to the PathResolveResult in that case. --- .../languages/java/jpms/LocationManager.java | 6 ++ .../java/jpms/LocationManagerTest.java | 76 +++++++++++++++++- .../plexus-java-1.0.0-SNAPSHOT-tests.jar | Bin 0 -> 371 bytes .../jar.tests/plexus-java-1.0.0-SNAPSHOT.jar | Bin 0 -> 855 bytes 4 files changed, 78 insertions(+), 4 deletions(-) create mode 100644 plexus-java/src/test/resources/jar.tests/plexus-java-1.0.0-SNAPSHOT-tests.jar create mode 100644 plexus-java/src/test/resources/jar.tests/plexus-java-1.0.0-SNAPSHOT.jar diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/LocationManager.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/LocationManager.java index a5b2f50..8b8b72b 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/LocationManager.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/LocationManager.java @@ -262,6 +262,12 @@ public String extract(Path path) throws IOException { .put( entry.getKey(), moduleNameSources.get(entry.getValue().name())); + } else { + result.getPathExceptions() + .put( + entry.getKey(), + new IllegalStateException( + "Module '" + entry.getValue().name() + "' is already on the module path!")); } } else { result.getClasspathElements().add(entry.getKey()); diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerTest.java index acd825d..92444e7 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerTest.java @@ -161,6 +161,36 @@ void testIdenticalModuleNames() throws Exception { ResolvePathsRequest request = ResolvePathsRequest.ofPaths(Arrays.asList(pj1, pj2)).setMainModuleDescriptor(mockModuleInfoJava); + when(asmParser.getModuleDescriptor(pj1)) + .thenReturn(JavaModuleDescriptor.newModule("plexus.java").build()); + when(asmParser.getModuleDescriptor(pj2)) + .thenReturn(JavaModuleDescriptor.newModule("plexus.java").build()); + + ResolvePathsResult result = locationManager.resolvePaths(request); + + assertThat(result.getMainModuleDescriptor()).isEqualTo(descriptor); + assertThat(result.getPathElements()).hasSize(2); + assertThat(result.getModulepathElements()).hasSize(1); + assertThat(result.getModulepathElements()).containsKey(pj1); + assertThat(result.getModulepathElements()).doesNotContainKey(pj2); + assertThat(result.getClasspathElements()).isEmpty(); + // duplicate is flagged as an error + assertThat(result.getPathExceptions()).containsOnlyKeys(pj2); + assertThat(result.getPathExceptions().get(pj2)) + .isInstanceOf(IllegalStateException.class) + .hasMessageContaining("Module 'plexus.java' is already on the module path!"); + } + + @Test + public void testIdenticalAutomaticModuleNames() throws Exception { + Path pj1 = Paths.get("src/test/resources/jar.empty/plexus-java-1.0.0-SNAPSHOT.jar"); + Path pj2 = Paths.get("src/test/resources/jar.empty.2/plexus-java-2.0.0-SNAPSHOT.jar"); + JavaModuleDescriptor descriptor = + JavaModuleDescriptor.newModule("base").requires("plexus.java").build(); + when(qdoxParser.fromSourcePath(any(Path.class))).thenReturn(descriptor); + ResolvePathsRequest request = + ResolvePathsRequest.ofPaths(Arrays.asList(pj1, pj2)).setMainModuleDescriptor(mockModuleInfoJava); + when(asmParser.getModuleDescriptor(pj1)) .thenReturn( JavaModuleDescriptor.newAutomaticModule("plexus.java").build()); @@ -173,8 +203,42 @@ void testIdenticalModuleNames() throws Exception { assertThat(result.getPathElements()).hasSize(2); assertThat(result.getModulepathElements()).containsOnlyKeys(pj1); assertThat(result.getModulepathElements()).doesNotContainKey(pj2); - assertThat(result.getClasspathElements()).hasSize(0); - assertThat(result.getPathExceptions()).hasSize(0); + assertThat(result.getClasspathElements()).isEmpty(); + // duplicate is flagged as an error + assertThat(result.getPathExceptions()).containsOnlyKeys(pj2); + assertThat(result.getPathExceptions().get(pj2)) + .isInstanceOf(IllegalStateException.class) + .hasMessageContaining("Module 'plexus.java' is already on the module path!"); + } + + @Test + public void testMainJarModuleAndTestJarAutomatic() throws Exception { + Path pj1 = Paths.get("src/test/resources/jar.tests/plexus-java-1.0.0-SNAPSHOT.jar"); + Path pj2 = Paths.get("src/test/resources/jar.tests/plexus-java-1.0.0-SNAPSHOT-tests.jar"); + JavaModuleDescriptor descriptor = + JavaModuleDescriptor.newModule("base").requires("plexus.java").build(); + when(qdoxParser.fromSourcePath(any(Path.class))).thenReturn(descriptor); + ResolvePathsRequest request = + ResolvePathsRequest.ofPaths(Arrays.asList(pj1, pj2)).setMainModuleDescriptor(mockModuleInfoJava); + + when(asmParser.getModuleDescriptor(pj1)) + .thenReturn(JavaModuleDescriptor.newModule("plexus.java").build()); + when(asmParser.getModuleDescriptor(pj2)).thenReturn(null); + + ResolvePathsResult result = locationManager.resolvePaths(request); + + assertThat(result.getMainModuleDescriptor()).isEqualTo(descriptor); + assertThat(result.getPathElements()).hasSize(2); + assertThat(result.getModulepathElements()).hasSize(1); + assertThat(result.getModulepathElements()).containsKey(pj1); + assertThat(result.getModulepathElements()).doesNotContainKey(pj2); + assertThat(result.getClasspathElements()).isEmpty(); + + // duplicate is flagged as an error + assertThat(result.getPathExceptions()).containsOnlyKeys(pj2); + assertThat(result.getPathExceptions().get(pj2)) + .isInstanceOf(IllegalStateException.class) + .hasMessageContaining("Module 'plexus.java' is already on the module path!"); } @Test @@ -473,9 +537,13 @@ void testDuplicateModule() throws Exception { ResolvePathsResult result = locationManager.resolvePaths(request); assertThat(result.getPathElements()).hasSize(2); assertThat(result.getModulepathElements()).containsOnlyKeys(moduleB); - // with current default the duplicate will be ignored assertThat(result.getClasspathElements()).hasSize(0); - assertThat(result.getPathExceptions()).hasSize(0); + assertThat(result.getPathExceptions()).hasSize(1); + // duplicate (module B / module C) is flagged as an error + assertThat(result.getPathExceptions()).containsOnlyKeys(moduleC); + assertThat(result.getPathExceptions().get(moduleC)) + .isInstanceOf(IllegalStateException.class) + .hasMessageContaining("Module 'anonymous' is already on the module path!"); } @Test diff --git a/plexus-java/src/test/resources/jar.tests/plexus-java-1.0.0-SNAPSHOT-tests.jar b/plexus-java/src/test/resources/jar.tests/plexus-java-1.0.0-SNAPSHOT-tests.jar new file mode 100644 index 0000000000000000000000000000000000000000..a6afd0fbf5a82ef0664819fe60f023082ec1e6d6 GIT binary patch literal 371 zcmWIWW@Zs#;Nak3crsBioB;`NGO#fCx`sIFdiuHP|2xINz|0Wf&CUT*!30$nfK#&w zPz7AGucM!*n`>~0p06A4>5Y621_BHh_ImzbsO&7QmgL;i^R0W{lOVWO9x zX{d$l<(;VcJBUlu4&=mr@FaE0S*myjj^ms+fSV7Dzt;aTox%Ia4

*(j{<{BKL=j-;__snS@Z(Y5MyxzK6=gyqp9At3C_`%a6JuhD!Pv48Bt5~>Z zyq0_ssgbcm?Rkor$Z{=z@oRyN$$1T4Nm zNdgtX;~11c0=!YRBF7WRT?k+cWWu!~B@c8HkV6F&p9pXO$VB!dICeqWxfpN<9YXsQ oMp!^1oD2#| Date: Mon, 2 Oct 2023 23:22:23 +0000 Subject: [PATCH 070/114] Bump org.ow2.asm:asm from 9.5 to 9.6 Bumps org.ow2.asm:asm from 9.5 to 9.6. --- updated-dependencies: - dependency-name: org.ow2.asm:asm dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 0313067..f3ba9ab 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -15,7 +15,7 @@ org.ow2.asm asm - 9.5 + 9.6 com.thoughtworks.qdox From 9cc4a3f6e4a4c9b079861594c76c8e4fe713843c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Oct 2023 23:26:46 +0000 Subject: [PATCH 071/114] Bump org.codehaus.plexus:plexus from 14 to 15 Bumps [org.codehaus.plexus:plexus](https://github.com/codehaus-plexus/plexus-pom) from 14 to 15. - [Release notes](https://github.com/codehaus-plexus/plexus-pom/releases) - [Commits](https://github.com/codehaus-plexus/plexus-pom/commits) --- updated-dependencies: - dependency-name: org.codehaus.plexus:plexus dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 02cf2dc..1b8ea9b 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus - 14 + 15 plexus-languages From 477fb79bd95a69a4d607dbcd10d8e407fc636ec4 Mon Sep 17 00:00:00 2001 From: Sylwester Lachiewicz Date: Wed, 4 Oct 2023 19:26:48 +0200 Subject: [PATCH 072/114] Cleanup after parent pom update --- plexus-java/pom.xml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index f3ba9ab..52db088 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -64,15 +64,6 @@ org.eclipse.sisu sisu-maven-plugin - 0.3.5 - - - index-project - - main-index - - - From dacf8b232db395e07249f11adadd3e3b1b86a984 Mon Sep 17 00:00:00 2001 From: Sylwester Lachiewicz Date: Mon, 16 Oct 2023 15:05:37 +0200 Subject: [PATCH 073/114] Remove redundant profile after parent pom update --- pom.xml | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/pom.xml b/pom.xml index 1b8ea9b..375a3b8 100644 --- a/pom.xml +++ b/pom.xml @@ -104,28 +104,5 @@ - - - - java21+ - - [21,) - - - - - com.diffplug.spotless - spotless-maven-plugin - - - - 2.35.0 - - - - - - - From 4dfc56b885ac2b724b8ff0b3f84fe471b4366cb6 Mon Sep 17 00:00:00 2001 From: Sylwester Lachiewicz Date: Mon, 16 Oct 2023 15:11:20 +0200 Subject: [PATCH 074/114] Remove redundant overwrite for junit5Version --- pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/pom.xml b/pom.xml index 375a3b8..cfe7d6c 100644 --- a/pom.xml +++ b/pom.xml @@ -37,7 +37,6 @@ - 5.10.0 scm:git:https://github.com/codehaus-plexus/plexus-languages.git 2023-01-01T19:06:16Z From e7df12c15f310b20f8d7aeb21262bbb6cfe4bce5 Mon Sep 17 00:00:00 2001 From: Sylwester Lachiewicz Date: Mon, 16 Oct 2023 15:25:07 +0200 Subject: [PATCH 075/114] Bump Site Fluido Skin to 1.12.0 --- plexus-java/src/site/site.xml | 6 +++--- src/site/site.xml | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/plexus-java/src/site/site.xml b/plexus-java/src/site/site.xml index c5b6dd7..0b603b5 100644 --- a/plexus-java/src/site/site.xml +++ b/plexus-java/src/site/site.xml @@ -19,9 +19,9 @@ specific language governing permissions and limitations under the License. --> - + xsi:schemaLocation="http://maven.apache.org/DECORATION/1.8.0 https://maven.apache.org/xsd/decoration-1.8.0.xsd">

@@ -34,4 +34,4 @@ under the License. - \ No newline at end of file + diff --git a/src/site/site.xml b/src/site/site.xml index b178bd4..ae3e3d0 100644 --- a/src/site/site.xml +++ b/src/site/site.xml @@ -19,12 +19,12 @@ specific language governing permissions and limitations under the License. --> - + xsi:schemaLocation="http://maven.apache.org/DECORATION/1.8.0 https://maven.apache.org/xsd/decoration-1.8.0.xsd"> org.apache.maven.skins maven-fluido-skin - 1.7 + 1.12.0 - \ No newline at end of file + From 9036768c40d36dc26ccbc96a5c4693b4981e9fea Mon Sep 17 00:00:00 2001 From: Sylwester Lachiewicz Date: Mon, 16 Oct 2023 15:35:08 +0200 Subject: [PATCH 076/114] [maven-release-plugin] prepare release plexus-languages-1.2.0 --- plexus-java/pom.xml | 2 +- pom.xml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 52db088..3e72bf7 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus-languages - 1.1.3-SNAPSHOT + 1.2.0 plexus-java diff --git a/pom.xml b/pom.xml index cfe7d6c..fee6a2e 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ plexus-languages - 1.1.3-SNAPSHOT + 1.2.0 pom Plexus Languages @@ -22,7 +22,7 @@ scm:git:https://github.com/codehaus-plexus/plexus-languages.git scm:git:https://github.com/codehaus-plexus/plexus-languages.git - HEAD + plexus-languages-1.2.0 https://github.com/codehaus-plexus/plexus-languages/tree/plexus-languages @@ -38,7 +38,7 @@ scm:git:https://github.com/codehaus-plexus/plexus-languages.git - 2023-01-01T19:06:16Z + 2023-10-16T13:34:58Z From 9fa6f19c0a6e4fd55503e95173bd6904909366b6 Mon Sep 17 00:00:00 2001 From: Sylwester Lachiewicz Date: Mon, 16 Oct 2023 15:35:12 +0200 Subject: [PATCH 077/114] [maven-release-plugin] prepare for next development iteration --- plexus-java/pom.xml | 2 +- pom.xml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 3e72bf7..42d3b23 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus-languages - 1.2.0 + 1.2.1-SNAPSHOT plexus-java diff --git a/pom.xml b/pom.xml index fee6a2e..3c4c143 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ plexus-languages - 1.2.0 + 1.2.1-SNAPSHOT pom Plexus Languages @@ -22,7 +22,7 @@ scm:git:https://github.com/codehaus-plexus/plexus-languages.git scm:git:https://github.com/codehaus-plexus/plexus-languages.git - plexus-languages-1.2.0 + HEAD https://github.com/codehaus-plexus/plexus-languages/tree/plexus-languages @@ -38,7 +38,7 @@ scm:git:https://github.com/codehaus-plexus/plexus-languages.git - 2023-10-16T13:34:58Z + 2023-10-16T13:35:12Z From 8f453bdbc5ea28dc85406d9cda3f5ff6f3539e43 Mon Sep 17 00:00:00 2001 From: Sylwester Lachiewicz Date: Sat, 2 Dec 2023 10:31:51 +0100 Subject: [PATCH 078/114] Reuse plexus-pom action for CI --- .github/workflows/maven.yml | 30 +++++++----------------------- 1 file changed, 7 insertions(+), 23 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index a96d12c..09feae4 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -21,27 +21,11 @@ on: [push, pull_request] jobs: build: + name: Build it + uses: codehaus-plexus/.github/.github/workflows/maven.yml@master - strategy: - matrix: - os: [ubuntu-latest,windows-latest, macOS-latest] - java: [8, 11, 17] - jdk: [temurin, zulu, adopt-openj9] - include: - - os: ubuntu-latest - java: 21 - jdk: corretto - fail-fast: false - - runs-on: ${{ matrix.os }} - - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-java@v3 - with: - distribution: ${{ matrix.jdk }} - java-version: ${{ matrix.java }} - cache: 'maven' - - - name: Build with Maven - run: mvn install javadoc:javadoc site -e -B -V -Pno-tests-if-not-on-osx + deploy: + name: Deploy + needs: build + uses: codehaus-plexus/.github/.github/workflows/maven-deploy.yml@master + secrets: inherit From bd7f987ff70f9792faf5642949b421d6309fe962 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Dec 2023 23:46:36 +0000 Subject: [PATCH 079/114] Bump org.codehaus.plexus:plexus from 15 to 16 Bumps [org.codehaus.plexus:plexus](https://github.com/codehaus-plexus/plexus-pom) from 15 to 16. - [Release notes](https://github.com/codehaus-plexus/plexus-pom/releases) - [Commits](https://github.com/codehaus-plexus/plexus-pom/commits) --- updated-dependencies: - dependency-name: org.codehaus.plexus:plexus dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3c4c143..bc7db14 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus - 15 + 16 plexus-languages From 9ac28c035ba82fad910e32aeea3b0e2a06ddb36f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Jan 2024 23:02:25 +0000 Subject: [PATCH 080/114] Bump org.assertj:assertj-core from 3.24.2 to 3.25.1 Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.24.2 to 3.25.1. - [Release notes](https://github.com/assertj/assertj/releases) - [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.24.2...assertj-build-3.25.1) --- updated-dependencies: - dependency-name: org.assertj:assertj-core dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 42d3b23..d4eecc3 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -54,7 +54,7 @@ org.assertj assertj-core - 3.24.2 + 3.25.1 test From 62dd4c711157acb56ef2a5594fd30da2267245a8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 24 Jan 2024 23:42:36 +0000 Subject: [PATCH 081/114] Bump org.assertj:assertj-core from 3.25.1 to 3.25.2 Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.25.1 to 3.25.2. - [Release notes](https://github.com/assertj/assertj/releases) - [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.25.1...assertj-build-3.25.2) --- updated-dependencies: - dependency-name: org.assertj:assertj-core dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index d4eecc3..b4c7164 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -54,7 +54,7 @@ org.assertj assertj-core - 3.25.1 + 3.25.2 test From 307ec3eebbbada898315953de60a749d674adff2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 2 Feb 2024 23:03:23 +0000 Subject: [PATCH 082/114] Bump release-drafter/release-drafter from 5 to 6 Bumps [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter) from 5 to 6. - [Release notes](https://github.com/release-drafter/release-drafter/releases) - [Commits](https://github.com/release-drafter/release-drafter/compare/v5...v6) --- updated-dependencies: - dependency-name: release-drafter/release-drafter dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/release-drafter.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml index 4000f8c..4c09c8a 100644 --- a/.github/workflows/release-drafter.yml +++ b/.github/workflows/release-drafter.yml @@ -7,6 +7,6 @@ jobs: update_release_draft: runs-on: ubuntu-latest steps: - - uses: release-drafter/release-drafter@v5 + - uses: release-drafter/release-drafter@v6 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 3899ab7df96a0b15e40b34ab6eff179f7ce69127 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Feb 2024 23:21:49 +0000 Subject: [PATCH 083/114] Bump org.assertj:assertj-core from 3.25.2 to 3.25.3 Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.25.2 to 3.25.3. - [Release notes](https://github.com/assertj/assertj/releases) - [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.25.2...assertj-build-3.25.3) --- updated-dependencies: - dependency-name: org.assertj:assertj-core dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index b4c7164..062ce84 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -54,7 +54,7 @@ org.assertj assertj-core - 3.25.2 + 3.25.3 test From bc2a5d4d7dfd49f7682f89f0629c5449a14935e2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jan 2024 23:30:39 +0000 Subject: [PATCH 084/114] Bump com.thoughtworks.qdox:qdox from 2.0.3 to 2.1.0 Bumps [com.thoughtworks.qdox:qdox](https://github.com/paul-hammant/qdox) from 2.0.3 to 2.1.0. - [Commits](https://github.com/paul-hammant/qdox/compare/qdox-2.0.3...qdox-2.1.0) --- updated-dependencies: - dependency-name: com.thoughtworks.qdox:qdox dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 062ce84..59bd2ab 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -20,7 +20,7 @@ com.thoughtworks.qdox qdox - 2.0.3 + 2.1.0 javax.inject From 1ee19827daee6ba47135e47fbe8d2f4a4f92b8eb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Mar 2024 23:29:06 +0000 Subject: [PATCH 085/114] Bump org.codehaus.plexus:plexus from 16 to 17 Bumps [org.codehaus.plexus:plexus](https://github.com/codehaus-plexus/plexus-pom) from 16 to 17. - [Release notes](https://github.com/codehaus-plexus/plexus-pom/releases) - [Commits](https://github.com/codehaus-plexus/plexus-pom/commits) --- updated-dependencies: - dependency-name: org.codehaus.plexus:plexus dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index bc7db14..1f39a36 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus - 16 + 17 plexus-languages From 7c347a9ca371b6c5503825969ba2af74ce47e17b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Mar 2024 23:40:27 +0000 Subject: [PATCH 086/114] Bump org.ow2.asm:asm from 9.6 to 9.7 Bumps org.ow2.asm:asm from 9.6 to 9.7. --- updated-dependencies: - dependency-name: org.ow2.asm:asm dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 59bd2ab..b7aa844 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -15,7 +15,7 @@ org.ow2.asm asm - 9.6 + 9.7 com.thoughtworks.qdox From ec90081bc263b495d353258d64d449da990213f5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 23 May 2024 22:23:23 +0200 Subject: [PATCH 087/114] Bump org.codehaus.plexus:plexus from 17 to 18 (#186) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 1f39a36..fee39cd 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus - 17 + 18 plexus-languages From eda608dcd8279b8ec1c773ebe240286fd2f47c18 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 May 2024 23:05:11 +0000 Subject: [PATCH 088/114] Bump org.assertj:assertj-core from 3.25.3 to 3.26.0 Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.25.3 to 3.26.0. - [Release notes](https://github.com/assertj/assertj/releases) - [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.25.3...assertj-build-3.26.0) --- updated-dependencies: - dependency-name: org.assertj:assertj-core dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index b7aa844..f44a1dd 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -54,7 +54,7 @@ org.assertj assertj-core - 3.25.3 + 3.26.0 test From 8b5240d291968fb485b06cc80702ecbcfd260949 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Jul 2024 23:18:51 +0000 Subject: [PATCH 089/114] Bump org.assertj:assertj-core from 3.26.0 to 3.26.3 Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.26.0 to 3.26.3. - [Release notes](https://github.com/assertj/assertj/releases) - [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.26.0...assertj-build-3.26.3) --- updated-dependencies: - dependency-name: org.assertj:assertj-core dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index f44a1dd..23176da 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -54,7 +54,7 @@ org.assertj assertj-core - 3.26.0 + 3.26.3 test From 7ef4e5e763192b3456e257b2bde98f93e9638910 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Boutemy?= Date: Sun, 18 Aug 2024 23:59:44 +0200 Subject: [PATCH 090/114] use new Reproducible Central badge endpoint --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 09dac90..f908fb3 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # Plexus Language ![Build Status](https://github.com/codehaus-plexus/plexus-languages/workflows/GitHub%20CI/badge.svg) ![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/codehaus-plexus/plexus-languages/maven.yml?branch=master) +[![Reproducible Builds](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/jvm-repo-rebuild/reproducible-central/master/content/org/codehaus/plexus/plexus-languages/badge.json)](https://github.com/jvm-repo-rebuild/reproducible-central/blob/master/content/content/org/codehaus/plexus/plexus-languages/README.md) Plexus Languages: From 61e68b6628c6c89337aa3f019930a29999827e10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Boutemy?= Date: Mon, 19 Aug 2024 00:51:47 +0200 Subject: [PATCH 091/114] fix Reproducible Central README link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f908fb3..8d07dc3 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Plexus Language ![Build Status](https://github.com/codehaus-plexus/plexus-languages/workflows/GitHub%20CI/badge.svg) ![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/codehaus-plexus/plexus-languages/maven.yml?branch=master) -[![Reproducible Builds](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/jvm-repo-rebuild/reproducible-central/master/content/org/codehaus/plexus/plexus-languages/badge.json)](https://github.com/jvm-repo-rebuild/reproducible-central/blob/master/content/content/org/codehaus/plexus/plexus-languages/README.md) +[![Reproducible Builds](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/jvm-repo-rebuild/reproducible-central/master/content/org/codehaus/plexus/plexus-languages/badge.json)](https://github.com/jvm-repo-rebuild/reproducible-central/blob/master/content/org/codehaus/plexus/plexus-languages/README.md) Plexus Languages: From 216e33d18410888fddbde97fff8f7b7d85863008 Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Tue, 24 Sep 2024 21:44:21 +0200 Subject: [PATCH 092/114] Rename resources of test data When we have test data in standard resources it will be copied to test-classes and available for other tools, but eg. it can be not correct classes --- ...stractFilenameModuleNameExtractorTest.java | 8 +- .../java/jpms/BinaryModuleInfoParserTest.java | 22 ++-- .../java/jpms/LocationManagerIT.java | 10 +- .../java/jpms/LocationManagerTest.java | 100 +++++++++--------- .../jpms/ManifestModuleNameExtractorTest.java | 10 +- .../java/jpms/SourceModuleInfoParserTest.java | 2 +- .../java/version/JavaClassVersionTest.java | 4 +- .../classfile.version/helloworld-10.class | Bin .../classfile.version/helloworld-11.class | Bin .../classfile.version/helloworld-12.class | Bin .../classfile.version/helloworld-13.class | Bin .../classfile.version/helloworld-14.class | Bin .../classfile.version/helloworld-15.class | Bin .../classfile.version/helloworld-16.class | Bin .../classfile.version/helloworld-17.class | Bin .../classfile.version/helloworld-18.class | Bin .../classfile.version/helloworld-19.class | Bin .../classfile.version/helloworld-20.class | Bin .../classfile.version/helloworld-21.class | Bin .../classfile.version/helloworld-22.class | Bin .../classfile.version/helloworld-8.class | Bin .../classfile.version/helloworld-9.class | Bin .../helloworld-preview.class | Bin .../out/module-info.class | Bin .../dir.descriptor.uses/out/module-info.class | Bin .../dir.descriptor/out/module-info.class | Bin .../dir.empty/out/README.txt | 0 .../out/META-INF/MANIFEST.MF | 0 .../out/META-INF/MANIFEST.MF | 0 .../plexus-java-1.0.0-SNAPSHOT.jar | Bin .../jar.descriptor/asm-6.0_BETA.jar | Bin .../plexus-java-2.0.0-SNAPSHOT.jar | Bin .../101-1.0.0-SNAPSHOT.jar | Bin .../jar.empty/plexus-java-1.0.0-SNAPSHOT.jar | Bin .../plexus-java-1.0.0-SNAPSHOT.jar | Bin .../jar.mr.descriptor/jloadr-1.0-SNAPSHOT.jar | Bin .../jloadr-1.0-SNAPSHOT.jar | Bin .../jar.service/threeten-extra-1.4.jar | Bin .../plexus-java-1.0.0-SNAPSHOT-tests.jar | Bin .../jar.tests/plexus-java-1.0.0-SNAPSHOT.jar | Bin .../jar.unsupported/jdom-1.0.jar | Bin .../first-jmod-1.0-SNAPSHOT.jmod | Bin .../{resources => test-data}/mock/jar0.jar | 0 .../{resources => test-data}/mock/jar1.jar | 0 .../{resources => test-data}/mock/jar2.jar | 0 .../mock/module-info.class | 0 .../mock/module-info.java | 0 .../{resources => test-data}/nonjar/pom.xml | 0 .../src.dir/module-info.java | 0 49 files changed, 78 insertions(+), 78 deletions(-) rename plexus-java/src/test/{resources => test-data}/classfile.version/helloworld-10.class (100%) rename plexus-java/src/test/{resources => test-data}/classfile.version/helloworld-11.class (100%) rename plexus-java/src/test/{resources => test-data}/classfile.version/helloworld-12.class (100%) rename plexus-java/src/test/{resources => test-data}/classfile.version/helloworld-13.class (100%) rename plexus-java/src/test/{resources => test-data}/classfile.version/helloworld-14.class (100%) rename plexus-java/src/test/{resources => test-data}/classfile.version/helloworld-15.class (100%) rename plexus-java/src/test/{resources => test-data}/classfile.version/helloworld-16.class (100%) rename plexus-java/src/test/{resources => test-data}/classfile.version/helloworld-17.class (100%) rename plexus-java/src/test/{resources => test-data}/classfile.version/helloworld-18.class (100%) rename plexus-java/src/test/{resources => test-data}/classfile.version/helloworld-19.class (100%) rename plexus-java/src/test/{resources => test-data}/classfile.version/helloworld-20.class (100%) rename plexus-java/src/test/{resources => test-data}/classfile.version/helloworld-21.class (100%) rename plexus-java/src/test/{resources => test-data}/classfile.version/helloworld-22.class (100%) rename plexus-java/src/test/{resources => test-data}/classfile.version/helloworld-8.class (100%) rename plexus-java/src/test/{resources => test-data}/classfile.version/helloworld-9.class (100%) rename plexus-java/src/test/{resources => test-data}/classfile.version/helloworld-preview.class (100%) rename plexus-java/src/test/{resources => test-data}/dir.descriptor.requires/out/module-info.class (100%) rename plexus-java/src/test/{resources => test-data}/dir.descriptor.uses/out/module-info.class (100%) rename plexus-java/src/test/{resources => test-data}/dir.descriptor/out/module-info.class (100%) rename plexus-java/src/test/{resources => test-data}/dir.empty/out/README.txt (100%) rename plexus-java/src/test/{resources => test-data}/dir.manifest.with/out/META-INF/MANIFEST.MF (100%) rename plexus-java/src/test/{resources => test-data}/dir.manifest.without/out/META-INF/MANIFEST.MF (100%) rename plexus-java/src/test/{resources => test-data}/jar with spaces in path/plexus-java-1.0.0-SNAPSHOT.jar (100%) rename plexus-java/src/test/{resources => test-data}/jar.descriptor/asm-6.0_BETA.jar (100%) rename plexus-java/src/test/{resources => test-data}/jar.empty.2/plexus-java-2.0.0-SNAPSHOT.jar (100%) rename plexus-java/src/test/{resources => test-data}/jar.empty.invalid.name/101-1.0.0-SNAPSHOT.jar (100%) rename plexus-java/src/test/{resources => test-data}/jar.empty/plexus-java-1.0.0-SNAPSHOT.jar (100%) rename plexus-java/src/test/{resources => test-data}/jar.manifest.with/plexus-java-1.0.0-SNAPSHOT.jar (100%) rename plexus-java/src/test/{resources => test-data}/jar.mr.descriptor/jloadr-1.0-SNAPSHOT.jar (100%) rename plexus-java/src/test/{resources => test-data}/jar.mr.incomplete.descriptor/jloadr-1.0-SNAPSHOT.jar (100%) rename plexus-java/src/test/{resources => test-data}/jar.service/threeten-extra-1.4.jar (100%) rename plexus-java/src/test/{resources => test-data}/jar.tests/plexus-java-1.0.0-SNAPSHOT-tests.jar (100%) rename plexus-java/src/test/{resources => test-data}/jar.tests/plexus-java-1.0.0-SNAPSHOT.jar (100%) rename plexus-java/src/test/{resources => test-data}/jar.unsupported/jdom-1.0.jar (100%) rename plexus-java/src/test/{resources => test-data}/jmod.descriptor/first-jmod-1.0-SNAPSHOT.jmod (100%) rename plexus-java/src/test/{resources => test-data}/mock/jar0.jar (100%) rename plexus-java/src/test/{resources => test-data}/mock/jar1.jar (100%) rename plexus-java/src/test/{resources => test-data}/mock/jar2.jar (100%) rename plexus-java/src/test/{resources => test-data}/mock/module-info.class (100%) rename plexus-java/src/test/{resources => test-data}/mock/module-info.java (100%) rename plexus-java/src/test/{resources => test-data}/nonjar/pom.xml (100%) rename plexus-java/src/test/{resources => test-data}/src.dir/module-info.java (100%) diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/AbstractFilenameModuleNameExtractorTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/AbstractFilenameModuleNameExtractorTest.java index 76c8736..356cb11 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/AbstractFilenameModuleNameExtractorTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/AbstractFilenameModuleNameExtractorTest.java @@ -31,27 +31,27 @@ public abstract class AbstractFilenameModuleNameExtractorTest { @Test void testJarWithoutManifest() throws Exception { - String name = getExtractor().extract(Paths.get("src/test/resources/jar.empty/plexus-java-1.0.0-SNAPSHOT.jar")); + String name = getExtractor().extract(Paths.get("src/test/test-data/jar.empty/plexus-java-1.0.0-SNAPSHOT.jar")); assertEquals("plexus.java", name); } @Test void testJarWithManifest() throws Exception { String name = getExtractor() - .extract(Paths.get("src/test/resources/jar.manifest.with/plexus-java-1.0.0-SNAPSHOT.jar")); + .extract(Paths.get("src/test/test-data/jar.manifest.with/plexus-java-1.0.0-SNAPSHOT.jar")); assertEquals("org.codehaus.plexus.languages.java", name); } @Test void testJarUnsupported() throws Exception { - String name = getExtractor().extract(Paths.get("src/test/resources/jar.unsupported/jdom-1.0.jar")); + String name = getExtractor().extract(Paths.get("src/test/test-data/jar.unsupported/jdom-1.0.jar")); assertNull(name); } @Test void testJarWithSpacesInPath() throws Exception { String name = getExtractor() - .extract(Paths.get("src/test/resources/jar with spaces in path/plexus-java-1.0.0-SNAPSHOT.jar")); + .extract(Paths.get("src/test/test-data/jar with spaces in path/plexus-java-1.0.0-SNAPSHOT.jar")); assertEquals("org.codehaus.plexus.languages.java", name); } } diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/BinaryModuleInfoParserTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/BinaryModuleInfoParserTest.java index 5ed2f0d..c688b0b 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/BinaryModuleInfoParserTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/BinaryModuleInfoParserTest.java @@ -49,7 +49,7 @@ class BinaryModuleInfoParserTest { @Test void testJarDescriptor() throws Exception { JavaModuleDescriptor descriptor = - parser.getModuleDescriptor(Paths.get("src/test/resources/jar.descriptor/asm-6.0_BETA.jar")); + parser.getModuleDescriptor(Paths.get("src/test/test-data/jar.descriptor/asm-6.0_BETA.jar")); assertNotNull(descriptor); assertThat(descriptor.name()).isEqualTo("org.objectweb.asm"); @@ -69,7 +69,7 @@ void testJarDescriptor() throws Exception { @Test void testMultiReleaseJarDescriptor() throws Exception { JavaModuleDescriptor descriptor = parser.getModuleDescriptor( - Paths.get("src/test/resources/jar.mr.descriptor/jloadr-1.0-SNAPSHOT.jar"), JavaVersion.parse("17")); + Paths.get("src/test/test-data/jar.mr.descriptor/jloadr-1.0-SNAPSHOT.jar"), JavaVersion.parse("17")); assertNotNull(descriptor); assertEquals("de.adito.jloadr", descriptor.name()); @@ -80,7 +80,7 @@ void testMultiReleaseJarDescriptor() throws Exception { void testIncompleteMultiReleaseJarDescriptor() throws Exception { // this jar is missing the Multi-Release: true entry in the Manifest JavaModuleDescriptor descriptor = parser.getModuleDescriptor( - Paths.get("src/test/resources/jar.mr.incomplete.descriptor/jloadr-1.0-SNAPSHOT.jar")); + Paths.get("src/test/test-data/jar.mr.incomplete.descriptor/jloadr-1.0-SNAPSHOT.jar")); assertNull(descriptor); } @@ -88,7 +88,7 @@ void testIncompleteMultiReleaseJarDescriptor() throws Exception { @Test void testClassicJar() throws Exception { JavaModuleDescriptor descriptor = - parser.getModuleDescriptor(Paths.get("src/test/resources/jar.empty/plexus-java-1.0.0-SNAPSHOT.jar")); + parser.getModuleDescriptor(Paths.get("src/test/test-data/jar.empty/plexus-java-1.0.0-SNAPSHOT.jar")); assertNull(descriptor); } @@ -96,7 +96,7 @@ void testClassicJar() throws Exception { @Test void testOutputDirectoryDescriptor() throws Exception { JavaModuleDescriptor descriptor = - parser.getModuleDescriptor(Paths.get("src/test/resources/dir.descriptor/out")); + parser.getModuleDescriptor(Paths.get("src/test/test-data/dir.descriptor/out")); assertNotNull(descriptor); assertEquals("org.codehaus.plexus.languages.java.demo", descriptor.name()); @@ -118,13 +118,13 @@ void testOutputDirectoryDescriptor() throws Exception { void testClassicOutputDirectory() { assertThrows( NoSuchFileException.class, - () -> parser.getModuleDescriptor(Paths.get("src/test/resources/dir.empty/out"))); + () -> parser.getModuleDescriptor(Paths.get("src/test/test-data/dir.empty/out"))); } @Test void testJModDescriptor() throws Exception { JavaModuleDescriptor descriptor = parser.getModuleDescriptor( - Paths.get("src/test/resources/jmod.descriptor/first-jmod-1.0-SNAPSHOT.jmod")); + Paths.get("src/test/test-data/jmod.descriptor/first-jmod-1.0-SNAPSHOT.jmod")); assertNotNull(descriptor); assertEquals("com.corporate.project", descriptor.name()); @@ -141,13 +141,13 @@ void testJModDescriptor() throws Exception { @Test void testInvalidFile() { assertThrows( - IOException.class, () -> parser.getModuleDescriptor(Paths.get("src/test/resources/nonjar/pom.xml"))); + IOException.class, () -> parser.getModuleDescriptor(Paths.get("src/test/test-data/nonjar/pom.xml"))); } @Test void testUses() throws Exception { try (InputStream is = - Files.newInputStream(Paths.get("src/test/resources/dir.descriptor.uses/out/module-info.class"))) { + Files.newInputStream(Paths.get("src/test/test-data/dir.descriptor.uses/out/module-info.class"))) { JavaModuleDescriptor descriptor = parser.parse(is); assertNotNull(descriptor); @@ -163,7 +163,7 @@ void testUses() throws Exception { @Test void testProvides() throws Exception { JavaModuleDescriptor descriptor = - parser.getModuleDescriptor(Paths.get("src/test/resources/jar.service/threeten-extra-1.4.jar")); + parser.getModuleDescriptor(Paths.get("src/test/test-data/jar.service/threeten-extra-1.4.jar")); assertNotNull(descriptor); assertEquals(1, descriptor.provides().size()); @@ -188,7 +188,7 @@ void testProvides() throws Exception { @Test void testRequires() throws Exception { try (InputStream is = - Files.newInputStream(Paths.get("src/test/resources/dir.descriptor.requires/out/module-info.class"))) { + Files.newInputStream(Paths.get("src/test/test-data/dir.descriptor.requires/out/module-info.class"))) { JavaModuleDescriptor descriptor = parser.parse(is); assertNotNull(descriptor); diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerIT.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerIT.java index 934eb2c..70c3a7f 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerIT.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerIT.java @@ -54,7 +54,7 @@ class LocationManagerIT { private LocationManager locationManager; - final Path mockModuleInfoJava = Paths.get("src/test/resources/mock/module-info.java"); + final Path mockModuleInfoJava = Paths.get("src/test/test-data/mock/module-info.java"); @BeforeEach void onSetup() { @@ -68,7 +68,7 @@ ModuleInfoParser getBinaryModuleInfoParser(Path jdkHome) { @Test void testManifestWithoutReflectRequires() throws Exception { - Path abc = Paths.get("src/test/resources/manifest.without/out"); + Path abc = Paths.get("src/test/test-data/manifest.without/out"); JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule("base").requires("any").build(); when(qdoxParser.fromSourcePath(any(Path.class))).thenReturn(descriptor); @@ -86,7 +86,7 @@ void testManifestWithoutReflectRequires() throws Exception { @Test void testEmptyWithReflectRequires() throws Exception { - Path abc = Paths.get("src/test/resources/empty/out"); + Path abc = Paths.get("src/test/test-data/empty/out"); JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule("base").requires("a.b.c").build(); when(qdoxParser.fromSourcePath(any(Path.class))).thenReturn(descriptor); @@ -105,7 +105,7 @@ void testEmptyWithReflectRequires() throws Exception { @Test void testResolvePathWithException() { assertThrows(RuntimeException.class, () -> { - Path p = Paths.get("src/test/resources/jar.empty.invalid.name/101-1.0.0-SNAPSHOT.jar"); + Path p = Paths.get("src/test/test-data/jar.empty.invalid.name/101-1.0.0-SNAPSHOT.jar"); ResolvePathRequest request = ResolvePathRequest.ofPath(p); locationManager.resolvePath(request); @@ -114,7 +114,7 @@ void testResolvePathWithException() { @Test void testClassicJarNameStartsWithNumber() throws Exception { - Path p = Paths.get("src/test/resources/jar.empty.invalid.name/101-1.0.0-SNAPSHOT.jar"); + Path p = Paths.get("src/test/test-data/jar.empty.invalid.name/101-1.0.0-SNAPSHOT.jar"); ResolvePathsRequest request = ResolvePathsRequest.ofPaths(Arrays.asList(p)).setMainModuleDescriptor(mockModuleInfoJava); diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerTest.java index 92444e7..274d115 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerTest.java @@ -42,7 +42,7 @@ class LocationManagerTest { private LocationManager locationManager; - final Path mockModuleInfoJava = Paths.get("src/test/resources/mock/module-info.java"); + final Path mockModuleInfoJava = Paths.get("src/test/test-data/mock/module-info.java"); @BeforeEach void onSetup() { @@ -88,7 +88,7 @@ void testWithUnknownRequires() throws Exception { @Test void testManifestWithReflectRequires() throws Exception { - Path abc = Paths.get("src/test/resources/dir.manifest.with/out"); + Path abc = Paths.get("src/test/test-data/dir.manifest.with/out"); JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule("base") .requires("auto.by.manifest") .build(); @@ -108,7 +108,7 @@ void testManifestWithReflectRequires() throws Exception { @Test void testDirDescriptorWithReflectRequires() throws Exception { - Path abc = Paths.get("src/test/resources/dir.descriptor/out"); + Path abc = Paths.get("src/test/test-data/dir.descriptor/out"); JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule("base") .requires("dir.descriptor") .build(); @@ -131,7 +131,7 @@ void testDirDescriptorWithReflectRequires() throws Exception { @Test void testJarWithAsmRequires() throws Exception { - Path abc = Paths.get("src/test/resources/jar.descriptor/asm-6.0_BETA.jar"); + Path abc = Paths.get("src/test/test-data/jar.descriptor/asm-6.0_BETA.jar"); JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule("base") .requires("org.objectweb.asm") .build(); @@ -153,8 +153,8 @@ void testJarWithAsmRequires() throws Exception { @Test void testIdenticalModuleNames() throws Exception { - Path pj1 = Paths.get("src/test/resources/jar.empty/plexus-java-1.0.0-SNAPSHOT.jar"); - Path pj2 = Paths.get("src/test/resources/jar.empty.2/plexus-java-2.0.0-SNAPSHOT.jar"); + Path pj1 = Paths.get("src/test/test-data/jar.empty/plexus-java-1.0.0-SNAPSHOT.jar"); + Path pj2 = Paths.get("src/test/test-data/jar.empty.2/plexus-java-2.0.0-SNAPSHOT.jar"); JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule("base").requires("plexus.java").build(); when(qdoxParser.fromSourcePath(any(Path.class))).thenReturn(descriptor); @@ -183,8 +183,8 @@ void testIdenticalModuleNames() throws Exception { @Test public void testIdenticalAutomaticModuleNames() throws Exception { - Path pj1 = Paths.get("src/test/resources/jar.empty/plexus-java-1.0.0-SNAPSHOT.jar"); - Path pj2 = Paths.get("src/test/resources/jar.empty.2/plexus-java-2.0.0-SNAPSHOT.jar"); + Path pj1 = Paths.get("src/test/test-data/jar.empty/plexus-java-1.0.0-SNAPSHOT.jar"); + Path pj2 = Paths.get("src/test/test-data/jar.empty.2/plexus-java-2.0.0-SNAPSHOT.jar"); JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule("base").requires("plexus.java").build(); when(qdoxParser.fromSourcePath(any(Path.class))).thenReturn(descriptor); @@ -213,8 +213,8 @@ public void testIdenticalAutomaticModuleNames() throws Exception { @Test public void testMainJarModuleAndTestJarAutomatic() throws Exception { - Path pj1 = Paths.get("src/test/resources/jar.tests/plexus-java-1.0.0-SNAPSHOT.jar"); - Path pj2 = Paths.get("src/test/resources/jar.tests/plexus-java-1.0.0-SNAPSHOT-tests.jar"); + Path pj1 = Paths.get("src/test/test-data/jar.tests/plexus-java-1.0.0-SNAPSHOT.jar"); + Path pj2 = Paths.get("src/test/test-data/jar.tests/plexus-java-1.0.0-SNAPSHOT-tests.jar"); JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule("base").requires("plexus.java").build(); when(qdoxParser.fromSourcePath(any(Path.class))).thenReturn(descriptor); @@ -243,7 +243,7 @@ public void testMainJarModuleAndTestJarAutomatic() throws Exception { @Test void testNonJar() throws Exception { - Path p = Paths.get("src/test/resources/nonjar/pom.xml"); + Path p = Paths.get("src/test/test-data/nonjar/pom.xml"); ResolvePathsRequest request = ResolvePathsRequest.ofPaths(Collections.singletonList(p)).setMainModuleDescriptor(mockModuleInfoJava); @@ -255,7 +255,7 @@ void testNonJar() throws Exception { @Test void testAdditionalModules() throws Exception { - Path p = Paths.get("src/test/resources/mock/jar0.jar"); + Path p = Paths.get("src/test/test-data/mock/jar0.jar"); JavaModuleDescriptor descriptor = JavaModuleDescriptor.newModule("base").build(); when(qdoxParser.fromSourcePath(any(Path.class))).thenReturn(descriptor); @@ -277,7 +277,7 @@ void testAdditionalModules() throws Exception { @Test void testResolvePath() throws Exception { - Path abc = Paths.get("src/test/resources/mock/jar0.jar"); + Path abc = Paths.get("src/test/test-data/mock/jar0.jar"); ResolvePathRequest request = ResolvePathRequest.ofPath(abc); when(asmParser.getModuleDescriptor(abc)) @@ -292,8 +292,8 @@ void testResolvePath() throws Exception { @Test void testNoMatchingProviders() throws Exception { - Path abc = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java - Path def = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file + Path abc = Paths.get("src/test/test-data/mock/module-info.java"); // some file called module-info.java + Path def = Paths.get("src/test/test-data/mock/jar0.jar"); // any existing file ResolvePathsRequest request = ResolvePathsRequest.ofPaths(def).setMainModuleDescriptor(abc).setIncludeAllProviders(true); @@ -313,8 +313,8 @@ void testNoMatchingProviders() throws Exception { @Test void testMainModuleDescriptorWithProviders() throws Exception { - Path abc = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java - Path def = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file + Path abc = Paths.get("src/test/test-data/mock/module-info.java"); // some file called module-info.java + Path def = Paths.get("src/test/test-data/mock/jar0.jar"); // any existing file ResolvePathsRequest request = ResolvePathsRequest.ofPaths(def).setMainModuleDescriptor(abc).setIncludeAllProviders(true); @@ -334,8 +334,8 @@ void testMainModuleDescriptorWithProviders() throws Exception { @Test void testMainModuleDescriptorWithProvidersDontIncludeProviders() throws Exception { - Path abc = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java - Path def = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file + Path abc = Paths.get("src/test/test-data/mock/module-info.java"); // some file called module-info.java + Path def = Paths.get("src/test/test-data/mock/jar0.jar"); // any existing file ResolvePathsRequest request = ResolvePathsRequest.ofPaths(def).setMainModuleDescriptor(abc); when(qdoxParser.fromSourcePath(abc)) @@ -354,9 +354,9 @@ void testMainModuleDescriptorWithProvidersDontIncludeProviders() throws Exceptio @Test void testTransitiveProviders() throws Exception { - Path abc = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java - Path def = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file - Path ghi = Paths.get("src/test/resources/mock/jar1.jar"); // any existing file + Path abc = Paths.get("src/test/test-data/mock/module-info.java"); // some file called module-info.java + Path def = Paths.get("src/test/test-data/mock/jar0.jar"); // any existing file + Path ghi = Paths.get("src/test/test-data/mock/jar1.jar"); // any existing file ResolvePathsRequest request = ResolvePathsRequest.ofPaths(def, ghi) .setMainModuleDescriptor(abc) .setIncludeAllProviders(true); @@ -380,9 +380,9 @@ void testTransitiveProviders() throws Exception { @Test void testDontIncludeProviders() throws Exception { - Path abc = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java - Path def = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file - Path ghi = Paths.get("src/test/resources/mock/jar1.jar"); // any existing file + Path abc = Paths.get("src/test/test-data/mock/module-info.java"); // some file called module-info.java + Path def = Paths.get("src/test/test-data/mock/jar0.jar"); // any existing file + Path ghi = Paths.get("src/test/test-data/mock/jar1.jar"); // any existing file ResolvePathsRequest request = ResolvePathsRequest.ofPaths(def, ghi).setMainModuleDescriptor(abc); @@ -405,8 +405,8 @@ void testDontIncludeProviders() throws Exception { @Test void testAllowAdditionalModulesWithoutMainDescriptor() throws Exception { - Path def = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file - Path ghi = Paths.get("src/test/resources/mock/jar1.jar"); // any existing file + Path def = Paths.get("src/test/test-data/mock/jar0.jar"); // any existing file + Path ghi = Paths.get("src/test/test-data/mock/jar1.jar"); // any existing file ResolvePathsRequest request = ResolvePathsRequest.ofPaths(def, ghi).setAdditionalModules(Collections.singleton("def")); @@ -424,7 +424,7 @@ void testAllowAdditionalModulesWithoutMainDescriptor() throws Exception { @Test void testReuseModuleDescriptor() throws Exception { - Path def = Paths.get("src/test/resources/mock/jar0.jar"); + Path def = Paths.get("src/test/test-data/mock/jar0.jar"); ResolvePathRequest request1 = ResolvePathRequest.ofPath(def); when(asmParser.getModuleDescriptor(def)) @@ -442,7 +442,7 @@ void testReuseModuleDescriptor() throws Exception { @Test void testParseModuleDescriptor() throws Exception { - Path descriptorPath = Paths.get("src/test/resources/src.dir/module-info.java"); + Path descriptorPath = Paths.get("src/test/test-data/src.dir/module-info.java"); when(qdoxParser.fromSourcePath(descriptorPath)) .thenReturn(JavaModuleDescriptor.newModule("a.b.c").build()); @@ -461,9 +461,9 @@ void testParseModuleDescriptor() throws Exception { @Test void testTransitiveStatic() throws Exception { - Path moduleA = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java - Path moduleB = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file - Path moduleC = Paths.get("src/test/resources/mock/jar1.jar"); // any existing file + Path moduleA = Paths.get("src/test/test-data/mock/module-info.java"); // some file called module-info.java + Path moduleB = Paths.get("src/test/test-data/mock/jar0.jar"); // any existing file + Path moduleC = Paths.get("src/test/test-data/mock/jar1.jar"); // any existing file ResolvePathsRequest request = ResolvePathsRequest.ofPaths(moduleB, moduleC).setMainModuleDescriptor(moduleA); @@ -487,10 +487,10 @@ void testTransitiveStatic() throws Exception { @Test void testDirectStatic() throws Exception { - Path moduleA = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java - Path moduleB = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file - Path moduleC = Paths.get("src/test/resources/mock/jar1.jar"); // any existing file - Path moduleD = Paths.get("src/test/resources/mock/jar2.jar"); // any existing file + Path moduleA = Paths.get("src/test/test-data/mock/module-info.java"); // some file called module-info.java + Path moduleB = Paths.get("src/test/test-data/mock/jar0.jar"); // any existing file + Path moduleC = Paths.get("src/test/test-data/mock/jar1.jar"); // any existing file + Path moduleD = Paths.get("src/test/test-data/mock/jar2.jar"); // any existing file ResolvePathsRequest request = ResolvePathsRequest.ofPaths(moduleB, moduleC, moduleD).setMainModuleDescriptor(moduleA); // .setIncludeStatic( true ); @@ -518,9 +518,9 @@ void testDirectStatic() throws Exception { @Test void testDuplicateModule() throws Exception { - Path moduleA = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java - Path moduleB = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file - Path moduleC = Paths.get("src/test/resources/mock/jar1.jar"); // any existing file + Path moduleA = Paths.get("src/test/test-data/mock/module-info.java"); // some file called module-info.java + Path moduleB = Paths.get("src/test/test-data/mock/jar0.jar"); // any existing file + Path moduleC = Paths.get("src/test/test-data/mock/jar1.jar"); // any existing file ResolvePathsRequest request = ResolvePathsRequest.ofPaths(moduleB, moduleC).setMainModuleDescriptor(moduleA); @@ -548,10 +548,10 @@ void testDuplicateModule() throws Exception { @Test void testStaticTransitive() throws Exception { - Path moduleA = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java - Path moduleB = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file - Path moduleC = Paths.get("src/test/resources/mock/jar1.jar"); // any existing file - Path moduleD = Paths.get("src/test/resources/mock/jar2.jar"); // any existing file + Path moduleA = Paths.get("src/test/test-data/mock/module-info.java"); // some file called module-info.java + Path moduleB = Paths.get("src/test/test-data/mock/jar0.jar"); // any existing file + Path moduleC = Paths.get("src/test/test-data/mock/jar1.jar"); // any existing file + Path moduleD = Paths.get("src/test/test-data/mock/jar2.jar"); // any existing file ResolvePathsRequest request = ResolvePathsRequest.ofPaths(moduleB, moduleC, moduleD).setMainModuleDescriptor(moduleA); @@ -582,9 +582,9 @@ void testStaticTransitive() throws Exception { */ @Test void includeDeeperRequiresStatic() throws Exception { - Path moduleA = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java - Path moduleB = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file - Path moduleC = Paths.get("src/test/resources/mock/jar1.jar"); // any existing file + Path moduleA = Paths.get("src/test/test-data/mock/module-info.java"); // some file called module-info.java + Path moduleB = Paths.get("src/test/test-data/mock/jar0.jar"); // any existing file + Path moduleC = Paths.get("src/test/test-data/mock/jar1.jar"); // any existing file ResolvePathsRequest request = ResolvePathsRequest.ofPaths(moduleA, moduleB, moduleC) .setMainModuleDescriptor(moduleA) .setIncludeStatic(true); @@ -608,10 +608,10 @@ void includeDeeperRequiresStatic() throws Exception { */ @Test void includeDeeperRequiresStaticTransitive() throws Exception { - Path moduleA = Paths.get("src/test/resources/mock/module-info.java"); // some file called module-info.java core - Path moduleB = Paths.get("src/test/resources/mock/jar0.jar"); // any existing file - Path moduleC = Paths.get("src/test/resources/mock/jar1.jar"); // any existing file - Path moduleD = Paths.get("src/test/resources/mock/jar2.jar"); // any existing file + Path moduleA = Paths.get("src/test/test-data/mock/module-info.java"); // some file called module-info.java core + Path moduleB = Paths.get("src/test/test-data/mock/jar0.jar"); // any existing file + Path moduleC = Paths.get("src/test/test-data/mock/jar1.jar"); // any existing file + Path moduleD = Paths.get("src/test/test-data/mock/jar2.jar"); // any existing file ResolvePathsRequest request = ResolvePathsRequest.ofPaths(moduleA, moduleB, moduleC, moduleD) .setMainModuleDescriptor(moduleA) .setIncludeStatic(true); diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/ManifestModuleNameExtractorTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/ManifestModuleNameExtractorTest.java index 7360585..e264a47 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/ManifestModuleNameExtractorTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/ManifestModuleNameExtractorTest.java @@ -30,28 +30,28 @@ class ManifestModuleNameExtractorTest { @Test void testNoManifestInJar() throws Exception { - assertNull(extractor.extract(Paths.get("src/test/resources/jar.name/plexus-java-1.0.0-SNAPSHOT.jar"))); + assertNull(extractor.extract(Paths.get("src/test/test-data/jar.name/plexus-java-1.0.0-SNAPSHOT.jar"))); } @Test void testManifestInJar() throws Exception { assertEquals( "org.codehaus.plexus.languages.java", - extractor.extract(Paths.get("src/test/resources/jar.manifest.with/plexus-java-1.0.0-SNAPSHOT.jar"))); + extractor.extract(Paths.get("src/test/test-data/jar.manifest.with/plexus-java-1.0.0-SNAPSHOT.jar"))); } @Test void testNoManifestInDir() throws Exception { - assertNull(extractor.extract(Paths.get("src/test/resources/empty/out"))); + assertNull(extractor.extract(Paths.get("src/test/test-data/empty/out"))); } @Test void testEmptyManifestInDir() throws Exception { - assertNull(extractor.extract(Paths.get("src/test/resources/manifest.without/out"))); + assertNull(extractor.extract(Paths.get("src/test/test-data/manifest.without/out"))); } @Test void testManifestInDir() throws Exception { - assertEquals("auto.by.manifest", extractor.extract(Paths.get("src/test/resources/dir.manifest.with/out"))); + assertEquals("auto.by.manifest", extractor.extract(Paths.get("src/test/test-data/dir.manifest.with/out"))); } } diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/SourceModuleInfoParserTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/SourceModuleInfoParserTest.java index eecd015..c29e921 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/SourceModuleInfoParserTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/SourceModuleInfoParserTest.java @@ -41,7 +41,7 @@ class SourceModuleInfoParserTest { @Test void test() throws Exception { JavaModuleDescriptor moduleDescriptor = - parser.fromSourcePath(Paths.get("src/test/resources/src.dir/module-info.java")); + parser.fromSourcePath(Paths.get("src/test/test-data/src.dir/module-info.java")); assertEquals("a.b.c", moduleDescriptor.name()); Iterator requiresIter = moduleDescriptor.requires().iterator(); diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/version/JavaClassVersionTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/version/JavaClassVersionTest.java index eaec9c5..59b979a 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/version/JavaClassVersionTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/version/JavaClassVersionTest.java @@ -36,7 +36,7 @@ void testFilesClassVersions(Path filePath) { static Stream provideClassFiles() { List paths; try (DirectoryStream directoryStream = - Files.newDirectoryStream(Paths.get("src/test/resources/classfile.version/"), "*-[0-9]?.class")) { + Files.newDirectoryStream(Paths.get("src/test/test-data/classfile.version/"), "*-[0-9]?.class")) { paths = StreamSupport.stream(directoryStream.spliterator(), false) .filter(Files::isRegularFile) .collect(Collectors.toList()); @@ -48,7 +48,7 @@ static Stream provideClassFiles() { @Test void testJavaClassPreview() { - Path previewFile = Paths.get("src/test/resources/classfile.version/helloworld-preview.class"); + Path previewFile = Paths.get("src/test/test-data/classfile.version/helloworld-preview.class"); JavaClassfileVersion previewClass = JavaClassfileVersion.of(previewFile); assertTrue(previewClass.isPreview()); assertEquals(20 + 44, previewClass.majorVersion()); diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-10.class b/plexus-java/src/test/test-data/classfile.version/helloworld-10.class similarity index 100% rename from plexus-java/src/test/resources/classfile.version/helloworld-10.class rename to plexus-java/src/test/test-data/classfile.version/helloworld-10.class diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-11.class b/plexus-java/src/test/test-data/classfile.version/helloworld-11.class similarity index 100% rename from plexus-java/src/test/resources/classfile.version/helloworld-11.class rename to plexus-java/src/test/test-data/classfile.version/helloworld-11.class diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-12.class b/plexus-java/src/test/test-data/classfile.version/helloworld-12.class similarity index 100% rename from plexus-java/src/test/resources/classfile.version/helloworld-12.class rename to plexus-java/src/test/test-data/classfile.version/helloworld-12.class diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-13.class b/plexus-java/src/test/test-data/classfile.version/helloworld-13.class similarity index 100% rename from plexus-java/src/test/resources/classfile.version/helloworld-13.class rename to plexus-java/src/test/test-data/classfile.version/helloworld-13.class diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-14.class b/plexus-java/src/test/test-data/classfile.version/helloworld-14.class similarity index 100% rename from plexus-java/src/test/resources/classfile.version/helloworld-14.class rename to plexus-java/src/test/test-data/classfile.version/helloworld-14.class diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-15.class b/plexus-java/src/test/test-data/classfile.version/helloworld-15.class similarity index 100% rename from plexus-java/src/test/resources/classfile.version/helloworld-15.class rename to plexus-java/src/test/test-data/classfile.version/helloworld-15.class diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-16.class b/plexus-java/src/test/test-data/classfile.version/helloworld-16.class similarity index 100% rename from plexus-java/src/test/resources/classfile.version/helloworld-16.class rename to plexus-java/src/test/test-data/classfile.version/helloworld-16.class diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-17.class b/plexus-java/src/test/test-data/classfile.version/helloworld-17.class similarity index 100% rename from plexus-java/src/test/resources/classfile.version/helloworld-17.class rename to plexus-java/src/test/test-data/classfile.version/helloworld-17.class diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-18.class b/plexus-java/src/test/test-data/classfile.version/helloworld-18.class similarity index 100% rename from plexus-java/src/test/resources/classfile.version/helloworld-18.class rename to plexus-java/src/test/test-data/classfile.version/helloworld-18.class diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-19.class b/plexus-java/src/test/test-data/classfile.version/helloworld-19.class similarity index 100% rename from plexus-java/src/test/resources/classfile.version/helloworld-19.class rename to plexus-java/src/test/test-data/classfile.version/helloworld-19.class diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-20.class b/plexus-java/src/test/test-data/classfile.version/helloworld-20.class similarity index 100% rename from plexus-java/src/test/resources/classfile.version/helloworld-20.class rename to plexus-java/src/test/test-data/classfile.version/helloworld-20.class diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-21.class b/plexus-java/src/test/test-data/classfile.version/helloworld-21.class similarity index 100% rename from plexus-java/src/test/resources/classfile.version/helloworld-21.class rename to plexus-java/src/test/test-data/classfile.version/helloworld-21.class diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-22.class b/plexus-java/src/test/test-data/classfile.version/helloworld-22.class similarity index 100% rename from plexus-java/src/test/resources/classfile.version/helloworld-22.class rename to plexus-java/src/test/test-data/classfile.version/helloworld-22.class diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-8.class b/plexus-java/src/test/test-data/classfile.version/helloworld-8.class similarity index 100% rename from plexus-java/src/test/resources/classfile.version/helloworld-8.class rename to plexus-java/src/test/test-data/classfile.version/helloworld-8.class diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-9.class b/plexus-java/src/test/test-data/classfile.version/helloworld-9.class similarity index 100% rename from plexus-java/src/test/resources/classfile.version/helloworld-9.class rename to plexus-java/src/test/test-data/classfile.version/helloworld-9.class diff --git a/plexus-java/src/test/resources/classfile.version/helloworld-preview.class b/plexus-java/src/test/test-data/classfile.version/helloworld-preview.class similarity index 100% rename from plexus-java/src/test/resources/classfile.version/helloworld-preview.class rename to plexus-java/src/test/test-data/classfile.version/helloworld-preview.class diff --git a/plexus-java/src/test/resources/dir.descriptor.requires/out/module-info.class b/plexus-java/src/test/test-data/dir.descriptor.requires/out/module-info.class similarity index 100% rename from plexus-java/src/test/resources/dir.descriptor.requires/out/module-info.class rename to plexus-java/src/test/test-data/dir.descriptor.requires/out/module-info.class diff --git a/plexus-java/src/test/resources/dir.descriptor.uses/out/module-info.class b/plexus-java/src/test/test-data/dir.descriptor.uses/out/module-info.class similarity index 100% rename from plexus-java/src/test/resources/dir.descriptor.uses/out/module-info.class rename to plexus-java/src/test/test-data/dir.descriptor.uses/out/module-info.class diff --git a/plexus-java/src/test/resources/dir.descriptor/out/module-info.class b/plexus-java/src/test/test-data/dir.descriptor/out/module-info.class similarity index 100% rename from plexus-java/src/test/resources/dir.descriptor/out/module-info.class rename to plexus-java/src/test/test-data/dir.descriptor/out/module-info.class diff --git a/plexus-java/src/test/resources/dir.empty/out/README.txt b/plexus-java/src/test/test-data/dir.empty/out/README.txt similarity index 100% rename from plexus-java/src/test/resources/dir.empty/out/README.txt rename to plexus-java/src/test/test-data/dir.empty/out/README.txt diff --git a/plexus-java/src/test/resources/dir.manifest.with/out/META-INF/MANIFEST.MF b/plexus-java/src/test/test-data/dir.manifest.with/out/META-INF/MANIFEST.MF similarity index 100% rename from plexus-java/src/test/resources/dir.manifest.with/out/META-INF/MANIFEST.MF rename to plexus-java/src/test/test-data/dir.manifest.with/out/META-INF/MANIFEST.MF diff --git a/plexus-java/src/test/resources/dir.manifest.without/out/META-INF/MANIFEST.MF b/plexus-java/src/test/test-data/dir.manifest.without/out/META-INF/MANIFEST.MF similarity index 100% rename from plexus-java/src/test/resources/dir.manifest.without/out/META-INF/MANIFEST.MF rename to plexus-java/src/test/test-data/dir.manifest.without/out/META-INF/MANIFEST.MF diff --git a/plexus-java/src/test/resources/jar with spaces in path/plexus-java-1.0.0-SNAPSHOT.jar b/plexus-java/src/test/test-data/jar with spaces in path/plexus-java-1.0.0-SNAPSHOT.jar similarity index 100% rename from plexus-java/src/test/resources/jar with spaces in path/plexus-java-1.0.0-SNAPSHOT.jar rename to plexus-java/src/test/test-data/jar with spaces in path/plexus-java-1.0.0-SNAPSHOT.jar diff --git a/plexus-java/src/test/resources/jar.descriptor/asm-6.0_BETA.jar b/plexus-java/src/test/test-data/jar.descriptor/asm-6.0_BETA.jar similarity index 100% rename from plexus-java/src/test/resources/jar.descriptor/asm-6.0_BETA.jar rename to plexus-java/src/test/test-data/jar.descriptor/asm-6.0_BETA.jar diff --git a/plexus-java/src/test/resources/jar.empty.2/plexus-java-2.0.0-SNAPSHOT.jar b/plexus-java/src/test/test-data/jar.empty.2/plexus-java-2.0.0-SNAPSHOT.jar similarity index 100% rename from plexus-java/src/test/resources/jar.empty.2/plexus-java-2.0.0-SNAPSHOT.jar rename to plexus-java/src/test/test-data/jar.empty.2/plexus-java-2.0.0-SNAPSHOT.jar diff --git a/plexus-java/src/test/resources/jar.empty.invalid.name/101-1.0.0-SNAPSHOT.jar b/plexus-java/src/test/test-data/jar.empty.invalid.name/101-1.0.0-SNAPSHOT.jar similarity index 100% rename from plexus-java/src/test/resources/jar.empty.invalid.name/101-1.0.0-SNAPSHOT.jar rename to plexus-java/src/test/test-data/jar.empty.invalid.name/101-1.0.0-SNAPSHOT.jar diff --git a/plexus-java/src/test/resources/jar.empty/plexus-java-1.0.0-SNAPSHOT.jar b/plexus-java/src/test/test-data/jar.empty/plexus-java-1.0.0-SNAPSHOT.jar similarity index 100% rename from plexus-java/src/test/resources/jar.empty/plexus-java-1.0.0-SNAPSHOT.jar rename to plexus-java/src/test/test-data/jar.empty/plexus-java-1.0.0-SNAPSHOT.jar diff --git a/plexus-java/src/test/resources/jar.manifest.with/plexus-java-1.0.0-SNAPSHOT.jar b/plexus-java/src/test/test-data/jar.manifest.with/plexus-java-1.0.0-SNAPSHOT.jar similarity index 100% rename from plexus-java/src/test/resources/jar.manifest.with/plexus-java-1.0.0-SNAPSHOT.jar rename to plexus-java/src/test/test-data/jar.manifest.with/plexus-java-1.0.0-SNAPSHOT.jar diff --git a/plexus-java/src/test/resources/jar.mr.descriptor/jloadr-1.0-SNAPSHOT.jar b/plexus-java/src/test/test-data/jar.mr.descriptor/jloadr-1.0-SNAPSHOT.jar similarity index 100% rename from plexus-java/src/test/resources/jar.mr.descriptor/jloadr-1.0-SNAPSHOT.jar rename to plexus-java/src/test/test-data/jar.mr.descriptor/jloadr-1.0-SNAPSHOT.jar diff --git a/plexus-java/src/test/resources/jar.mr.incomplete.descriptor/jloadr-1.0-SNAPSHOT.jar b/plexus-java/src/test/test-data/jar.mr.incomplete.descriptor/jloadr-1.0-SNAPSHOT.jar similarity index 100% rename from plexus-java/src/test/resources/jar.mr.incomplete.descriptor/jloadr-1.0-SNAPSHOT.jar rename to plexus-java/src/test/test-data/jar.mr.incomplete.descriptor/jloadr-1.0-SNAPSHOT.jar diff --git a/plexus-java/src/test/resources/jar.service/threeten-extra-1.4.jar b/plexus-java/src/test/test-data/jar.service/threeten-extra-1.4.jar similarity index 100% rename from plexus-java/src/test/resources/jar.service/threeten-extra-1.4.jar rename to plexus-java/src/test/test-data/jar.service/threeten-extra-1.4.jar diff --git a/plexus-java/src/test/resources/jar.tests/plexus-java-1.0.0-SNAPSHOT-tests.jar b/plexus-java/src/test/test-data/jar.tests/plexus-java-1.0.0-SNAPSHOT-tests.jar similarity index 100% rename from plexus-java/src/test/resources/jar.tests/plexus-java-1.0.0-SNAPSHOT-tests.jar rename to plexus-java/src/test/test-data/jar.tests/plexus-java-1.0.0-SNAPSHOT-tests.jar diff --git a/plexus-java/src/test/resources/jar.tests/plexus-java-1.0.0-SNAPSHOT.jar b/plexus-java/src/test/test-data/jar.tests/plexus-java-1.0.0-SNAPSHOT.jar similarity index 100% rename from plexus-java/src/test/resources/jar.tests/plexus-java-1.0.0-SNAPSHOT.jar rename to plexus-java/src/test/test-data/jar.tests/plexus-java-1.0.0-SNAPSHOT.jar diff --git a/plexus-java/src/test/resources/jar.unsupported/jdom-1.0.jar b/plexus-java/src/test/test-data/jar.unsupported/jdom-1.0.jar similarity index 100% rename from plexus-java/src/test/resources/jar.unsupported/jdom-1.0.jar rename to plexus-java/src/test/test-data/jar.unsupported/jdom-1.0.jar diff --git a/plexus-java/src/test/resources/jmod.descriptor/first-jmod-1.0-SNAPSHOT.jmod b/plexus-java/src/test/test-data/jmod.descriptor/first-jmod-1.0-SNAPSHOT.jmod similarity index 100% rename from plexus-java/src/test/resources/jmod.descriptor/first-jmod-1.0-SNAPSHOT.jmod rename to plexus-java/src/test/test-data/jmod.descriptor/first-jmod-1.0-SNAPSHOT.jmod diff --git a/plexus-java/src/test/resources/mock/jar0.jar b/plexus-java/src/test/test-data/mock/jar0.jar similarity index 100% rename from plexus-java/src/test/resources/mock/jar0.jar rename to plexus-java/src/test/test-data/mock/jar0.jar diff --git a/plexus-java/src/test/resources/mock/jar1.jar b/plexus-java/src/test/test-data/mock/jar1.jar similarity index 100% rename from plexus-java/src/test/resources/mock/jar1.jar rename to plexus-java/src/test/test-data/mock/jar1.jar diff --git a/plexus-java/src/test/resources/mock/jar2.jar b/plexus-java/src/test/test-data/mock/jar2.jar similarity index 100% rename from plexus-java/src/test/resources/mock/jar2.jar rename to plexus-java/src/test/test-data/mock/jar2.jar diff --git a/plexus-java/src/test/resources/mock/module-info.class b/plexus-java/src/test/test-data/mock/module-info.class similarity index 100% rename from plexus-java/src/test/resources/mock/module-info.class rename to plexus-java/src/test/test-data/mock/module-info.class diff --git a/plexus-java/src/test/resources/mock/module-info.java b/plexus-java/src/test/test-data/mock/module-info.java similarity index 100% rename from plexus-java/src/test/resources/mock/module-info.java rename to plexus-java/src/test/test-data/mock/module-info.java diff --git a/plexus-java/src/test/resources/nonjar/pom.xml b/plexus-java/src/test/test-data/nonjar/pom.xml similarity index 100% rename from plexus-java/src/test/resources/nonjar/pom.xml rename to plexus-java/src/test/test-data/nonjar/pom.xml diff --git a/plexus-java/src/test/resources/src.dir/module-info.java b/plexus-java/src/test/test-data/src.dir/module-info.java similarity index 100% rename from plexus-java/src/test/resources/src.dir/module-info.java rename to plexus-java/src/test/test-data/src.dir/module-info.java From abcb0a623618bf647942176f374d7798f3fff475 Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Tue, 24 Sep 2024 22:35:16 +0200 Subject: [PATCH 093/114] Read only first 8 bytes of class in JavaClassfileVersion We don't need to read whole class file, only first 8 bytes are used. --- .../java/version/JavaClassfileVersion.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/version/JavaClassfileVersion.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/version/JavaClassfileVersion.java index e909f8f..d380a01 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/version/JavaClassfileVersion.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/version/JavaClassfileVersion.java @@ -1,6 +1,7 @@ package org.codehaus.plexus.languages.java.version; import java.io.IOException; +import java.io.InputStream; import java.io.UncheckedIOException; import java.nio.file.Files; import java.nio.file.Path; @@ -62,9 +63,19 @@ public static JavaClassfileVersion of(byte[] bytes) { * @return the {@link JavaClassfileVersion} of the path java class */ public static JavaClassfileVersion of(Path path) { - try { - byte[] readAllBytes = Files.readAllBytes(path); - return of(readAllBytes); + try (InputStream is = Files.newInputStream(path)) { + byte[] bytes = new byte[8]; + int total = 0; + while (total < 8) { + int l = is.read(bytes, total, 8 - total); + if (l > 0) { + total += l; + } + if (l == -1) { + break; + } + } + return of(bytes); } catch (IOException ex) { throw new UncheckedIOException(ex); } From 83c78a71a95ab4f87a15685a89c1d1ff5f8f66e5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 27 Sep 2024 17:32:32 +0200 Subject: [PATCH 094/114] Bump org.codehaus.plexus:plexus from 18 to 19 (#192) * Bump org.codehaus.plexus:plexus from 18 to 19 Bumps [org.codehaus.plexus:plexus](https://github.com/codehaus-plexus/plexus-pom) from 18 to 19. - [Release notes](https://github.com/codehaus-plexus/plexus-pom/releases) - [Commits](https://github.com/codehaus-plexus/plexus-pom/commits) --- updated-dependencies: - dependency-name: org.codehaus.plexus:plexus dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Fix site with new parent --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Slawomir Jaranowski --- .../src/site/markdown/locationmanager.md | 8 ++--- plexus-java/src/site/markdown/usage.md | 9 +++--- plexus-java/src/site/site.xml | 9 +++--- pom.xml | 8 +++-- src/site/site.xml | 30 ------------------- 5 files changed, 18 insertions(+), 46 deletions(-) delete mode 100644 src/site/site.xml diff --git a/plexus-java/src/site/markdown/locationmanager.md b/plexus-java/src/site/markdown/locationmanager.md index 61be07a..9a8d4b9 100644 --- a/plexus-java/src/site/markdown/locationmanager.md +++ b/plexus-java/src/site/markdown/locationmanager.md @@ -6,7 +6,7 @@ This jar is a multi release jar (aka MRJAR), because it contains 2 implementatio When extracting the the automatic module name based the of the file, it is a little bit more complex. The result must be precise, so the only way to solve this is by calling Java 9 code, either from the runtime or by calling Java 9 explicitly when provided via `ResolvePathsRequest.setJdkHome`. -## Request +# Request The `LocationManager.resolvePaths()` only has one argument, `ResolvePathsRequest`. If there is more data required, the request will be extended so the method signature of `resolvePaths` will stay the same. @@ -30,7 +30,7 @@ Additional methods are: - `setMainModuleDescriptor`, which can either be a `module-info.java` or `module-info.class` -## Phase 1: Collect +# Phase 1: Collect If there's a `mainModuleDescriptor`, extract a `JavaModuleDescriptor` of it. This might cause a `IOException` to be thrown. @@ -50,13 +50,13 @@ The result are a couple of Maps: * module name to `JavaModuleDescriptor` -## Phase 2: Resolve +# Phase 2: Resolve If there's a `mainModuleDescriptor`, collect all its direct and indirect requirements. This contains recursive code and ensures that required modules are only evaluated once. All these pathElements must be placed on the modulepath, all other pathElements will be marked for the classPath. -## Result +# Result All results will be stored in a `ResolvePathsResult`. - `getClasspathElements()`, ordered collection of all pathElements that don't belong to the modulepath diff --git a/plexus-java/src/site/markdown/usage.md b/plexus-java/src/site/markdown/usage.md index 730ee23..a43dc37 100644 --- a/plexus-java/src/site/markdown/usage.md +++ b/plexus-java/src/site/markdown/usage.md @@ -1,5 +1,5 @@ -## LocationManager.resolvePaths +# LocationManager.resolvePaths In order to use this class you must setup a `ResolvePathsRequest`, which requires a list of all the jars and output directories and the main module descriptor. @@ -25,13 +25,12 @@ The `ResolvePathsResult` contains: * pathExceptions: pathElements with their exception while trying to resolve it. Only pathElements with an exception are listed. -## JavaVersion +# JavaVersion This is a String based, lazy-parsing implementation of a Java Version which can be used to compare versions. It's goal is to support to support the following patterns: - * [Java SE Naming and Versions](http://www.oracle.com/technetwork/java/javase/namechange-140185.html) - * [JEP 223: New Version-String Scheme](http://openjdk.java.net/jeps/223) - * [JEP 322: Time-Based Release Versioning](http://openjdk.java.net/jeps/322) + * [JEP 223: New Version-String Scheme](https://openjdk.java.net/jeps/223) + * [JEP 322: Time-Based Release Versioning](https://openjdk.java.net/jeps/322) Additional features: diff --git a/plexus-java/src/site/site.xml b/plexus-java/src/site/site.xml index 0b603b5..b8b7da8 100644 --- a/plexus-java/src/site/site.xml +++ b/plexus-java/src/site/site.xml @@ -19,19 +19,18 @@ specific language governing permissions and limitations under the License. --> - + + - - + diff --git a/pom.xml b/pom.xml index fee39cd..7badab1 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus - 18 + 19 plexus-languages @@ -27,8 +27,12 @@ github - http://github.com/codehaus-plexus/plexus-languages/issues + https://github.com/codehaus-plexus/plexus-languages/issues + + GitHub + https://github.com/codehaus-plexus/plexus-languages/actions + github:gh-pages diff --git a/src/site/site.xml b/src/site/site.xml deleted file mode 100644 index ae3e3d0..0000000 --- a/src/site/site.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - org.apache.maven.skins - maven-fluido-skin - 1.12.0 - - From 71b21474e4be1e8375106dd5045d2712b1777010 Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Thu, 26 Sep 2024 00:33:17 +0200 Subject: [PATCH 095/114] Project cleanups - use spotless for java9 sources - fix warnings reported by IDE - fix used dependencies --- plexus-java/pom.xml | 19 ++--- .../jpms/AbstractBinaryModuleInfoParser.java | 2 +- .../languages/java/jpms/LocationManager.java | 24 ++---- .../jpms/ManifestModuleNameExtractor.java | 15 ++-- plexus-java/src/main/java9/module-info.java | 12 +-- .../java/jpms/BinaryModuleInfoParser.java | 79 ++++++++----------- .../java/jpms/CmdModuleNameExtractor.java | 49 +++++------- .../java/jpms/CmdModuleNameExtractorTest.java | 2 +- .../java/jpms/LocationManagerIT.java | 7 +- .../java/jpms/LocationManagerTest.java | 62 +++++++-------- .../java/version/JavaClassVersionTest.java | 2 +- .../java/version/JavaVersionTest.java | 40 +++++----- pom.xml | 14 ++++ 13 files changed, 150 insertions(+), 177 deletions(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 23176da..fa62f27 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -30,7 +30,12 @@ org.junit.jupiter - junit-jupiter + junit-jupiter-api + test + + + org.junit.jupiter + junit-jupiter-params test @@ -45,12 +50,6 @@ 4.11.0 test - - com.google.inject - guice - 6.0.0 - test - org.assertj assertj-core @@ -69,12 +68,6 @@ org.apache.maven.plugins maven-failsafe-plugin - - - **/*Test.java - **/*IT.java - - diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/AbstractBinaryModuleInfoParser.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/AbstractBinaryModuleInfoParser.java index 81e90e9..0abd925 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/AbstractBinaryModuleInfoParser.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/AbstractBinaryModuleInfoParser.java @@ -58,7 +58,7 @@ public JavaModuleDescriptor getModuleDescriptor(Path modulePath, JavaVersion jdk .equalsIgnoreCase( manifest.getMainAttributes().getValue("Multi-Release"))) { int javaVersion = - Integer.valueOf(jdkVersion.asMajor().getValue(1)); + Integer.parseInt(jdkVersion.asMajor().getValue(1)); for (int version = javaVersion; version >= 9; version--) { String resource = "META-INF/versions/" + version + "/module-info.class"; diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/LocationManager.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/LocationManager.java index 8b8b72b..2c866cf 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/LocationManager.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/LocationManager.java @@ -162,16 +162,13 @@ public ResolvePathsResult resolvePaths(final ResolvePathsRequest reque JavaModuleDescriptor moduleDescriptor; ModuleNameSource source; - ModuleNameExtractor nameExtractor = new ModuleNameExtractor() { - @Override - public String extract(Path path) throws IOException { - if (request.getJdkHome() != null) { - filenameAutoModules.put(t, path); - } else { - return CmdModuleNameExtractor.getModuleName(path); - } - return null; + ModuleNameExtractor nameExtractor = path -> { + if (request.getJdkHome() != null) { + filenameAutoModules.put(t, path); + } else { + return CmdModuleNameExtractor.getModuleName(path); } + return null; }; try { @@ -323,7 +320,7 @@ private ResolvePathResult resolvePath( // either jar or outputDirectory if (Files.isRegularFile(path) && !path.getFileName().toString().endsWith(".jar")) { throw new IllegalArgumentException( - "'" + path.toString() + "' not allowed on the path, only outputDirectories and jars are accepted"); + "'" + path + "' not allowed on the path, only outputDirectories and jars are accepted"); } if (Files.isRegularFile(path) || Files.exists(path.resolve("module-info.class"))) { @@ -428,13 +425,8 @@ private void collectProviders(JavaModuleDescriptor moduleDescriptor, Map providingModules = availableProviders.get(serviceClassName); + Set providingModules = availableProviders.computeIfAbsent(serviceClassName, k -> new HashSet<>()); - if (providingModules == null) { - providingModules = new HashSet<>(); - - availableProviders.put(serviceClassName, providingModules); - } providingModules.add(moduleDescriptor.name()); } } diff --git a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ManifestModuleNameExtractor.java b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ManifestModuleNameExtractor.java index 6c6d502..4c1fc90 100644 --- a/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ManifestModuleNameExtractor.java +++ b/plexus-java/src/main/java/org/codehaus/plexus/languages/java/jpms/ManifestModuleNameExtractor.java @@ -19,10 +19,9 @@ * under the License. */ -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; +import java.nio.file.Files; import java.nio.file.Path; import java.util.jar.JarFile; import java.util.jar.Manifest; @@ -36,7 +35,7 @@ class ManifestModuleNameExtractor implements ModuleNameExtractor { @Override public String extract(Path file) throws IOException { - Manifest manifest = extractManifest(file.toFile()); + Manifest manifest = extractManifest(file); String automaticModuleName; if (manifest != null) { @@ -48,14 +47,14 @@ public String extract(Path file) throws IOException { return automaticModuleName; } - private Manifest extractManifest(File file) throws IOException { + private Manifest extractManifest(Path file) throws IOException { Manifest manifest; - if (file.isFile()) { - try (JarFile jarFile = new JarFile(file)) { + if (Files.isRegularFile(file)) { + try (JarFile jarFile = new JarFile(file.toFile())) { manifest = jarFile.getManifest(); } - } else if (new File(file, "META-INF/MANIFEST.MF").exists()) { - try (InputStream is = new FileInputStream(new File(file, "META-INF/MANIFEST.MF"))) { + } else if (Files.exists(file.resolve("META-INF/MANIFEST.MF"))) { + try (InputStream is = Files.newInputStream(file.resolve("META-INF/MANIFEST.MF"))) { manifest = new Manifest(is); } } else { diff --git a/plexus-java/src/main/java9/module-info.java b/plexus-java/src/main/java9/module-info.java index 9b83831..c09093b 100644 --- a/plexus-java/src/main/java9/module-info.java +++ b/plexus-java/src/main/java9/module-info.java @@ -16,13 +16,13 @@ * specific language governing permissions and limitations * under the License. */ -module org.codehaus.plexus.languages.java -{ +module org.codehaus.plexus.languages.java { requires com.thoughtworks.qdox; requires org.objectweb.asm; - + exports org.codehaus.plexus.languages.java.jpms; exports org.codehaus.plexus.languages.java.version; - - provides org.codehaus.plexus.languages.java.jpms.LocationManager with org.codehaus.plexus.languages.java.jpms.LocationManager; -} \ No newline at end of file + + provides org.codehaus.plexus.languages.java.jpms.LocationManager with + org.codehaus.plexus.languages.java.jpms.LocationManager; +} diff --git a/plexus-java/src/main/java9/org/codehaus/plexus/languages/java/jpms/BinaryModuleInfoParser.java b/plexus-java/src/main/java9/org/codehaus/plexus/languages/java/jpms/BinaryModuleInfoParser.java index 6bab93e..a2f3af1 100644 --- a/plexus-java/src/main/java9/org/codehaus/plexus/languages/java/jpms/BinaryModuleInfoParser.java +++ b/plexus-java/src/main/java9/org/codehaus/plexus/languages/java/jpms/BinaryModuleInfoParser.java @@ -21,68 +21,55 @@ import java.io.IOException; import java.io.InputStream; - import java.lang.module.ModuleDescriptor; -import java.util.Collections; import java.util.LinkedHashSet; import java.util.Set; import org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor.Builder; -class BinaryModuleInfoParser extends AbstractBinaryModuleInfoParser -{ +class BinaryModuleInfoParser extends AbstractBinaryModuleInfoParser { @Override - JavaModuleDescriptor parse( InputStream in ) throws IOException - { - ModuleDescriptor descriptor = ModuleDescriptor.read( in ); - - Builder builder = JavaModuleDescriptor.newModule( descriptor.name() ); - - for ( ModuleDescriptor.Requires requires : descriptor.requires() ) - { - if ( requires.modifiers().contains( ModuleDescriptor.Requires.Modifier.STATIC ) - || requires.modifiers().contains( ModuleDescriptor.Requires.Modifier.TRANSITIVE ) ) - { + JavaModuleDescriptor parse(InputStream in) throws IOException { + ModuleDescriptor descriptor = ModuleDescriptor.read(in); + + Builder builder = JavaModuleDescriptor.newModule(descriptor.name()); + + for (ModuleDescriptor.Requires requires : descriptor.requires()) { + if (requires.modifiers().contains(ModuleDescriptor.Requires.Modifier.STATIC) + || requires.modifiers().contains(ModuleDescriptor.Requires.Modifier.TRANSITIVE)) { Set modifiers = new LinkedHashSet<>(); - if ( requires.modifiers().contains( ModuleDescriptor.Requires.Modifier.STATIC ) ) - { - modifiers.add( org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor.JavaRequires.JavaModifier.STATIC ); + if (requires.modifiers().contains(ModuleDescriptor.Requires.Modifier.STATIC)) { + modifiers.add( + org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor.JavaRequires.JavaModifier + .STATIC); } - if ( requires.modifiers().contains( ModuleDescriptor.Requires.Modifier.TRANSITIVE ) ) - { - modifiers.add( org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor.JavaRequires.JavaModifier.TRANSITIVE ); + if (requires.modifiers().contains(ModuleDescriptor.Requires.Modifier.TRANSITIVE)) { + modifiers.add( + org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor.JavaRequires.JavaModifier + .TRANSITIVE); } - builder.requires( modifiers, requires.name() ); - } - else - { - builder.requires( requires.name() ); + builder.requires(modifiers, requires.name()); + } else { + builder.requires(requires.name()); } } - - for ( ModuleDescriptor.Exports exports : descriptor.exports() ) - { - if ( exports.targets().isEmpty() ) - { - builder.exports( exports.source() ); - } - else - { - builder.exports( exports.source(), exports.targets() ); + + for (ModuleDescriptor.Exports exports : descriptor.exports()) { + if (exports.targets().isEmpty()) { + builder.exports(exports.source()); + } else { + builder.exports(exports.source(), exports.targets()); } } - - for ( String uses : descriptor.uses() ) - { - builder.uses( uses ); + + for (String uses : descriptor.uses()) { + builder.uses(uses); } - - for ( ModuleDescriptor.Provides provides : descriptor.provides() ) - { - builder.provides( provides.service(), provides.providers() ); + + for (ModuleDescriptor.Provides provides : descriptor.provides()) { + builder.provides(provides.service(), provides.providers()); } - - + return builder.build(); } } diff --git a/plexus-java/src/main/java9/org/codehaus/plexus/languages/java/jpms/CmdModuleNameExtractor.java b/plexus-java/src/main/java9/org/codehaus/plexus/languages/java/jpms/CmdModuleNameExtractor.java index 2c7a090..5f684a4 100644 --- a/plexus-java/src/main/java9/org/codehaus/plexus/languages/java/jpms/CmdModuleNameExtractor.java +++ b/plexus-java/src/main/java9/org/codehaus/plexus/languages/java/jpms/CmdModuleNameExtractor.java @@ -41,54 +41,43 @@ *

* The result is a properties-file written ot the StdOut, having the jar path as key and the module name as value.
* Any exception is written to the StdErr. - *

- * + *

+ * * @author Robert Scholte * @since 1.0.0 */ -public class CmdModuleNameExtractor -{ - public static void main( String[] args ) - { +public class CmdModuleNameExtractor { + public static void main(String[] args) { Properties properties = new Properties(); - for ( String path : args ) - { - try - { - String moduleName = getModuleName( Paths.get( path ) ); - if ( moduleName != null ) - { - properties.setProperty( path, moduleName ); + for (String path : args) { + try { + String moduleName = getModuleName(Paths.get(path)); + if (moduleName != null) { + properties.setProperty(path, moduleName); } - } - catch ( Exception e ) - { - System.err.append( e.getMessage() ); + } catch (Exception e) { + System.err.append(e.getMessage()); } } - try - { - properties.store( System.out, "" ); - } - catch ( IOException e ) - { - System.exit( 1 ); + try { + properties.store(System.out, ""); + } catch (IOException e) { + System.exit(1); } } /** * Get the name of the module, using Java 9 code without reflection - * + * * @param modulePath the module path * @return the module name * @throws FindException If an error occurs finding the module */ - public static String getModuleName( Path modulePath ) throws FindException - { - Set moduleReferences = ModuleFinder.of( modulePath ).findAll(); - + public static String getModuleName(Path modulePath) throws FindException { + Set moduleReferences = ModuleFinder.of(modulePath).findAll(); + Optional modRef = moduleReferences.stream().findFirst(); return modRef.isPresent() ? modRef.get().descriptor().name() : null; diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/CmdModuleNameExtractorTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/CmdModuleNameExtractorTest.java index 6527f47..8430cbf 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/CmdModuleNameExtractorTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/CmdModuleNameExtractorTest.java @@ -29,7 +29,7 @@ class CmdModuleNameExtractorTest { @Test void testMethodCount() throws Exception { // ensure that both implementations are in sync - assertThat(CmdModuleNameExtractor.class.getDeclaredMethods().length).isEqualTo(2); + assertThat(CmdModuleNameExtractor.class.getDeclaredMethods()).hasSize(2); // if these don't exist, a NoSuchMethodException is thrown CmdModuleNameExtractor.class.getDeclaredMethod("main", String[].class); diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerIT.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerIT.java index 70c3a7f..a33c7ce 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerIT.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerIT.java @@ -21,7 +21,6 @@ import java.nio.file.Path; import java.nio.file.Paths; -import java.util.Arrays; import java.util.Collections; import org.junit.jupiter.api.BeforeEach; @@ -77,10 +76,10 @@ void testManifestWithoutReflectRequires() throws Exception { ResolvePathsResult result = locationManager.resolvePaths(request); - assertThat(result.getPathExceptions()).hasSize(0); + assertThat(result.getPathExceptions()).isEmpty(); assertThat(result.getMainModuleDescriptor()).isEqualTo(descriptor); assertThat(result.getPathElements()).hasSize(1); - assertThat(result.getModulepathElements()).hasSize(0); + assertThat(result.getModulepathElements()).isEmpty(); assertThat(result.getClasspathElements()).hasSize(1); } @@ -116,7 +115,7 @@ void testResolvePathWithException() { void testClassicJarNameStartsWithNumber() throws Exception { Path p = Paths.get("src/test/test-data/jar.empty.invalid.name/101-1.0.0-SNAPSHOT.jar"); ResolvePathsRequest request = - ResolvePathsRequest.ofPaths(Arrays.asList(p)).setMainModuleDescriptor(mockModuleInfoJava); + ResolvePathsRequest.ofPaths(Collections.singletonList(p)).setMainModuleDescriptor(mockModuleInfoJava); ResolvePathsResult result = locationManager.resolvePaths(request); diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerTest.java index 274d115..2b8cb04 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/jpms/LocationManagerTest.java @@ -61,10 +61,10 @@ void testNoPaths() throws Exception { ResolvePathsResult result = locationManager.resolvePaths(ResolvePathsRequest.ofFiles(Collections.emptyList())); assertThat(result.getMainModuleDescriptor()).isNull(); - assertThat(result.getPathElements()).hasSize(0); - assertThat(result.getModulepathElements()).hasSize(0); - assertThat(result.getClasspathElements()).hasSize(0); - assertThat(result.getPathExceptions()).hasSize(0); + assertThat(result.getPathElements()).isEmpty(); + assertThat(result.getModulepathElements()).isEmpty(); + assertThat(result.getClasspathElements()).isEmpty(); + assertThat(result.getPathExceptions()).isEmpty(); } @Test @@ -80,10 +80,10 @@ void testWithUnknownRequires() throws Exception { ResolvePathsResult result = locationManager.resolvePaths(request); assertThat(result.getMainModuleDescriptor()).isEqualTo(descriptor); - assertThat(result.getPathElements()).hasSize(0); - assertThat(result.getModulepathElements()).hasSize(0); - assertThat(result.getClasspathElements()).hasSize(0); - assertThat(result.getPathExceptions()).hasSize(0); + assertThat(result.getPathElements()).isEmpty(); + assertThat(result.getModulepathElements()).isEmpty(); + assertThat(result.getClasspathElements()).isEmpty(); + assertThat(result.getPathExceptions()).isEmpty(); } @Test @@ -102,8 +102,8 @@ void testManifestWithReflectRequires() throws Exception { assertThat(result.getPathElements()).hasSize(1); assertThat(result.getModulepathElements()).hasSize(1); assertThat(result.getModulepathElements().get(abc)).isEqualTo(ModuleNameSource.MANIFEST); - assertThat(result.getClasspathElements()).hasSize(0); - assertThat(result.getPathExceptions()).hasSize(0); + assertThat(result.getClasspathElements()).isEmpty(); + assertThat(result.getPathExceptions()).isEmpty(); } @Test @@ -125,8 +125,8 @@ void testDirDescriptorWithReflectRequires() throws Exception { assertThat(result.getPathElements()).hasSize(1); assertThat(result.getModulepathElements()).hasSize(1); assertThat(result.getModulepathElements().get(abc)).isEqualTo(ModuleNameSource.MODULEDESCRIPTOR); - assertThat(result.getClasspathElements()).hasSize(0); - assertThat(result.getPathExceptions()).hasSize(0); + assertThat(result.getClasspathElements()).isEmpty(); + assertThat(result.getPathExceptions()).isEmpty(); } @Test @@ -147,8 +147,8 @@ void testJarWithAsmRequires() throws Exception { assertThat(result.getPathElements()).hasSize(1); assertThat(result.getModulepathElements()).hasSize(1); assertThat(result.getModulepathElements().get(abc)).isEqualTo(ModuleNameSource.MODULEDESCRIPTOR); - assertThat(result.getClasspathElements()).hasSize(0); - assertThat(result.getPathExceptions()).hasSize(0); + assertThat(result.getClasspathElements()).isEmpty(); + assertThat(result.getPathExceptions()).isEmpty(); } @Test @@ -271,8 +271,8 @@ void testAdditionalModules() throws Exception { assertThat(result.getMainModuleDescriptor()).isEqualTo(descriptor); assertThat(result.getPathElements()).hasSize(1); assertThat(result.getModulepathElements()).hasSize(1); - assertThat(result.getClasspathElements()).hasSize(0); - assertThat(result.getPathExceptions()).hasSize(0); + assertThat(result.getClasspathElements()).isEmpty(); + assertThat(result.getPathExceptions()).isEmpty(); } @Test @@ -306,9 +306,9 @@ void testNoMatchingProviders() throws Exception { ResolvePathsResult result = locationManager.resolvePaths(request); assertThat(result.getPathElements()).hasSize(1); - assertThat(result.getModulepathElements()).hasSize(0); + assertThat(result.getModulepathElements()).isEmpty(); assertThat(result.getClasspathElements()).hasSize(1); - assertThat(result.getPathExceptions()).hasSize(0); + assertThat(result.getPathExceptions()).isEmpty(); } @Test @@ -328,8 +328,8 @@ void testMainModuleDescriptorWithProviders() throws Exception { ResolvePathsResult result = locationManager.resolvePaths(request); assertThat(result.getPathElements()).hasSize(1); assertThat(result.getModulepathElements()).hasSize(1); - assertThat(result.getClasspathElements()).hasSize(0); - assertThat(result.getPathExceptions()).hasSize(0); + assertThat(result.getClasspathElements()).isEmpty(); + assertThat(result.getPathExceptions()).isEmpty(); } @Test @@ -347,9 +347,9 @@ void testMainModuleDescriptorWithProvidersDontIncludeProviders() throws Exceptio ResolvePathsResult result = locationManager.resolvePaths(request); assertThat(result.getPathElements()).hasSize(1); - assertThat(result.getModulepathElements()).hasSize(0); + assertThat(result.getModulepathElements()).isEmpty(); assertThat(result.getClasspathElements()).hasSize(1); - assertThat(result.getPathExceptions()).hasSize(0); + assertThat(result.getPathExceptions()).isEmpty(); } @Test @@ -374,8 +374,8 @@ void testTransitiveProviders() throws Exception { ResolvePathsResult result = locationManager.resolvePaths(request); assertThat(result.getPathElements()).hasSize(2); assertThat(result.getModulepathElements()).hasSize(2); - assertThat(result.getClasspathElements()).hasSize(0); - assertThat(result.getPathExceptions()).hasSize(0); + assertThat(result.getClasspathElements()).isEmpty(); + assertThat(result.getPathExceptions()).isEmpty(); } @Test @@ -400,7 +400,7 @@ void testDontIncludeProviders() throws Exception { assertThat(result.getPathElements()).hasSize(2); assertThat(result.getModulepathElements()).hasSize(1); assertThat(result.getClasspathElements()).hasSize(1); - assertThat(result.getPathExceptions()).hasSize(0); + assertThat(result.getPathExceptions()).isEmpty(); } @Test @@ -419,7 +419,7 @@ void testAllowAdditionalModulesWithoutMainDescriptor() throws Exception { assertThat(result.getPathElements()).hasSize(2); assertThat(result.getModulepathElements()).hasSize(1); assertThat(result.getClasspathElements()).hasSize(1); - assertThat(result.getPathExceptions()).hasSize(0); + assertThat(result.getPathExceptions()).isEmpty(); } @Test @@ -482,7 +482,7 @@ void testTransitiveStatic() throws Exception { assertThat(result.getPathElements()).hasSize(2); assertThat(result.getModulepathElements()).hasSize(1); assertThat(result.getClasspathElements()).hasSize(1); - assertThat(result.getPathExceptions()).hasSize(0); + assertThat(result.getPathExceptions()).isEmpty(); } @Test @@ -513,7 +513,7 @@ void testDirectStatic() throws Exception { assertThat(result.getPathElements()).hasSize(3); assertThat(result.getModulepathElements()).containsOnlyKeys(moduleB, moduleD); assertThat(result.getClasspathElements()).containsOnly(moduleC); - assertThat(result.getPathExceptions()).hasSize(0); + assertThat(result.getPathExceptions()).isEmpty(); } @Test @@ -537,7 +537,7 @@ void testDuplicateModule() throws Exception { ResolvePathsResult result = locationManager.resolvePaths(request); assertThat(result.getPathElements()).hasSize(2); assertThat(result.getModulepathElements()).containsOnlyKeys(moduleB); - assertThat(result.getClasspathElements()).hasSize(0); + assertThat(result.getClasspathElements()).isEmpty(); assertThat(result.getPathExceptions()).hasSize(1); // duplicate (module B / module C) is flagged as an error assertThat(result.getPathExceptions()).containsOnlyKeys(moduleC); @@ -565,7 +565,7 @@ void testStaticTransitive() throws Exception { .build()); when(asmParser.getModuleDescriptor(moduleC)) .thenReturn(JavaModuleDescriptor.newModule("moduleC") - .requires(new HashSet<>(Arrays.asList(JavaModifier.STATIC)), "moduleD") + .requires(new HashSet<>(Collections.singletonList(JavaModifier.STATIC)), "moduleD") .build()); when(asmParser.getModuleDescriptor(moduleD)) .thenReturn(JavaModuleDescriptor.newModule("moduleD").build()); @@ -574,7 +574,7 @@ void testStaticTransitive() throws Exception { assertThat(result.getPathElements()).hasSize(3); assertThat(result.getModulepathElements()).containsOnlyKeys(moduleB, moduleC); assertThat(result.getClasspathElements()).containsOnly(moduleD); - assertThat(result.getPathExceptions()).hasSize(0); + assertThat(result.getPathExceptions()).isEmpty(); } /** diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/version/JavaClassVersionTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/version/JavaClassVersionTest.java index 59b979a..c29b50a 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/version/JavaClassVersionTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/version/JavaClassVersionTest.java @@ -26,7 +26,7 @@ class JavaClassVersionTest { @MethodSource("provideClassFiles") void testFilesClassVersions(Path filePath) { String fileName = filePath.getFileName().toString(); - int javaVersion = Integer.valueOf(fileName.substring(fileName.indexOf("-") + 1, fileName.length() - 6)); + int javaVersion = Integer.parseInt(fileName.substring(fileName.indexOf("-") + 1, fileName.length() - 6)); JavaClassfileVersion classVersion = JavaClassfileVersion.of(filePath); assertEquals(javaVersion + 44, classVersion.majorVersion()); assertEquals(0, classVersion.minorVersion()); diff --git a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/version/JavaVersionTest.java b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/version/JavaVersionTest.java index de1db99..39b4381 100644 --- a/plexus-java/src/test/java/org/codehaus/plexus/languages/java/version/JavaVersionTest.java +++ b/plexus-java/src/test/java/org/codehaus/plexus/languages/java/version/JavaVersionTest.java @@ -34,19 +34,19 @@ class JavaVersionTest { @Test void testParse() { assertThat(JavaVersion.parse("1.4").compareTo(JavaVersion.parse("1.4.2"))) - .isLessThan(0); - assertThat(JavaVersion.parse("1.4").compareTo(JavaVersion.parse("1.5"))).isLessThan(0); - assertThat(JavaVersion.parse("1.8").compareTo(JavaVersion.parse("9"))).isLessThan(0); + .isNegative(); + assertThat(JavaVersion.parse("1.4").compareTo(JavaVersion.parse("1.5"))).isNegative(); + assertThat(JavaVersion.parse("1.8").compareTo(JavaVersion.parse("9"))).isNegative(); - assertThat(JavaVersion.parse("1.4").compareTo(JavaVersion.parse("1.4"))).isEqualTo(0); + assertThat(JavaVersion.parse("1.4").compareTo(JavaVersion.parse("1.4"))).isZero(); assertThat(JavaVersion.parse("1.4.2").compareTo(JavaVersion.parse("1.4.2"))) - .isEqualTo(0); - assertThat(JavaVersion.parse("9").compareTo(JavaVersion.parse("9"))).isEqualTo(0); + .isZero(); + assertThat(JavaVersion.parse("9").compareTo(JavaVersion.parse("9"))).isZero(); assertThat(JavaVersion.parse("1.4.2").compareTo(JavaVersion.parse("1.4"))) - .isGreaterThan(0); - assertThat(JavaVersion.parse("1.5").compareTo(JavaVersion.parse("1.4"))).isGreaterThan(0); - assertThat(JavaVersion.parse("9").compareTo(JavaVersion.parse("1.8"))).isGreaterThan(0); + .isPositive(); + assertThat(JavaVersion.parse("1.5").compareTo(JavaVersion.parse("1.4"))).isPositive(); + assertThat(JavaVersion.parse("9").compareTo(JavaVersion.parse("1.8"))).isPositive(); } @Test @@ -56,31 +56,31 @@ void testVersionNamingExamples() { // Source: http://www.oracle.com/technetwork/java/javase/versioning-naming-139433.html assertThat(JavaVersion.parse("1.3.0").compareTo(JavaVersion.parse("1.3.0_01"))) - .isLessThan(0); + .isNegative(); assertThat(JavaVersion.parse("1.3.0_01").compareTo(JavaVersion.parse("1.3.1"))) - .isLessThan(0); + .isNegative(); assertThat(JavaVersion.parse("1.3.1").compareTo(JavaVersion.parse("1.3.1_01"))) - .isLessThan(0); + .isNegative(); assertThat(JavaVersion.parse("1.3.0").compareTo(JavaVersion.parse("1.3.0-b24"))) - .isLessThan(0); + .isNegative(); } @Test void testJEP223Short() { // http://openjdk.java.net/jeps/223 - assertThat(JavaVersion.parse("9-ea").compareTo(JavaVersion.parse("9"))).isLessThan(0); - assertThat(JavaVersion.parse("9").compareTo(JavaVersion.parse("9.0.1"))).isLessThan(0); + assertThat(JavaVersion.parse("9-ea").compareTo(JavaVersion.parse("9"))).isNegative(); + assertThat(JavaVersion.parse("9").compareTo(JavaVersion.parse("9.0.1"))).isNegative(); assertThat(JavaVersion.parse("9.0.1").compareTo(JavaVersion.parse("9.0.2"))) - .isLessThan(0); + .isNegative(); assertThat(JavaVersion.parse("9.0.2").compareTo(JavaVersion.parse("9.1.2"))) - .isLessThan(0); + .isNegative(); assertThat(JavaVersion.parse("9.1.2").compareTo(JavaVersion.parse("9.1.3"))) - .isLessThan(0); + .isNegative(); assertThat(JavaVersion.parse("9.1.3").compareTo(JavaVersion.parse("9.1.4"))) - .isLessThan(0); + .isNegative(); assertThat(JavaVersion.parse("9.1.4").compareTo(JavaVersion.parse("9.2.4"))) - .isLessThan(0); + .isNegative(); } @Test diff --git a/pom.xml b/pom.xml index 7badab1..0198bb8 100644 --- a/pom.xml +++ b/pom.xml @@ -55,6 +55,20 @@ true
+ + com.diffplug.spotless + spotless-maven-plugin + ${spotless-maven-plugin.version} + + + + src/main/java/**/*.java + src/main/java9/**/*.java + src/test/java/**/*.java + + + + From 40e19a293d7312e5eb1c967baaa5922d472869a1 Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Fri, 27 Sep 2024 18:03:36 +0200 Subject: [PATCH 096/114] [maven-release-plugin] prepare release plexus-languages-1.3.0 --- plexus-java/pom.xml | 2 +- pom.xml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index fa62f27..7ffbd33 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus-languages - 1.2.1-SNAPSHOT + 1.3.0 plexus-java diff --git a/pom.xml b/pom.xml index 0198bb8..e68c6da 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ plexus-languages - 1.2.1-SNAPSHOT + 1.3.0 pom Plexus Languages @@ -22,7 +22,7 @@ scm:git:https://github.com/codehaus-plexus/plexus-languages.git scm:git:https://github.com/codehaus-plexus/plexus-languages.git - HEAD + plexus-languages-1.3.0 https://github.com/codehaus-plexus/plexus-languages/tree/plexus-languages @@ -42,7 +42,7 @@ scm:git:https://github.com/codehaus-plexus/plexus-languages.git - 2023-10-16T13:35:12Z + 2024-09-27T16:03:32Z From f9e6d622860f51f1d68a9f608607ad0bbede6b1a Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Fri, 27 Sep 2024 18:03:40 +0200 Subject: [PATCH 097/114] [maven-release-plugin] prepare for next development iteration --- plexus-java/pom.xml | 2 +- pom.xml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 7ffbd33..2fb14d4 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus-languages - 1.3.0 + 1.3.1-SNAPSHOT plexus-java diff --git a/pom.xml b/pom.xml index e68c6da..28fac66 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ plexus-languages - 1.3.0 + 1.3.1-SNAPSHOT pom Plexus Languages @@ -22,7 +22,7 @@ scm:git:https://github.com/codehaus-plexus/plexus-languages.git scm:git:https://github.com/codehaus-plexus/plexus-languages.git - plexus-languages-1.3.0 + HEAD https://github.com/codehaus-plexus/plexus-languages/tree/plexus-languages @@ -42,7 +42,7 @@ scm:git:https://github.com/codehaus-plexus/plexus-languages.git - 2024-09-27T16:03:32Z + 2024-09-27T16:03:40Z From 0b3216c03746df0ded2311efccae5e64e7b41503 Mon Sep 17 00:00:00 2001 From: Sylwester Lachiewicz Date: Tue, 8 Oct 2024 02:03:53 +0200 Subject: [PATCH 098/114] Added CI for JDK 24-ea --- .github/workflows/maven.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 09feae4..22e19de 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -23,7 +23,11 @@ jobs: build: name: Build it uses: codehaus-plexus/.github/.github/workflows/maven.yml@master - + with: + matrix-include: > + [ + {"jdk": "24-ea", "os": "ubuntu-latest", distribution: "temurin" } + ] deploy: name: Deploy needs: build From 1978ee7754065815fda640a0e188983cacd08278 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20Sol=C3=B3rzano?= Date: Mon, 7 Oct 2024 11:51:49 +0200 Subject: [PATCH 099/114] Bump org.ow2.asm:asm from 9.7 to 9.7.1 - JDK 24 support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jorge Solórzano --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 2fb14d4..98a866f 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -15,7 +15,7 @@ org.ow2.asm asm - 9.7 + 9.7.1 com.thoughtworks.qdox From 9767a26fa43353a686897b189ba0f7c3fc0dc907 Mon Sep 17 00:00:00 2001 From: Sylwester Lachiewicz Date: Tue, 8 Oct 2024 03:01:34 +0200 Subject: [PATCH 100/114] Added sample helloworld compiled with Java 23 and 24 --- .../classfile.version/helloworld-23.class | Bin 0 -> 428 bytes .../classfile.version/helloworld-24.class | Bin 0 -> 685 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 plexus-java/src/test/test-data/classfile.version/helloworld-23.class create mode 100644 plexus-java/src/test/test-data/classfile.version/helloworld-24.class diff --git a/plexus-java/src/test/test-data/classfile.version/helloworld-23.class b/plexus-java/src/test/test-data/classfile.version/helloworld-23.class new file mode 100644 index 0000000000000000000000000000000000000000..08eff3485a990a7189f443fcf4464731b1ad6929 GIT binary patch literal 428 zcmZvY%}T>S6ot>2*lA)kwYBvh>Ox3emA<~Vjq#f#%Nk(F#_*lA7aNz^^ zP~x2^h|*cyxm?cq?&W-ZzP$q&VAsV0EDqblB5DkcS$rRdD$b_iMKTlPf}wUKGg%xn zSV3>(pbm$_^{@o*k34$3D?~~vU6QFitUywSm$}S}sK`Z}_Ul+-a8HF&x_d^8Tr{xC z(e%*58bfQ2hk@T3g31UQd{e9Q2r08^zc=FO5cI}CA9SuJ4E8`z1cN`6nK&=gMC4a- zqG)2Lu_R6>xSj_hN~FttEKZ~m`@hITa~Qg4Q&{GiN^yZJq{dAD}j?#Yg0 zn5nB=xz`NkqYwTMy^bsL{~?W%G5qsmAjU+Qe^2Y9x-gam0Fwl9R-Wq zS59`!g^ULyTk&48?IW#4c#J0ul}z-E9Y$@0c!qV3jR>1~&agE0+{m5mN`mo$(0zG& z$*`6*CR5!b(hxDWId&qvz%IkeP-EI8-ON{SnMCTz#Klkqm3PzgiK9_R()%Ax%cLCp z4B;1_^_#K!f+0Ajqzns9mCN`2tS#+F(bjYlWI|C#!j|dVj`Y1E)R_6oyCma#G#dW# zD-8!2UQ)G5JM$+8-@&e_pedl$e+J6*R{ufkRC)5o9eDEw50_VhpD2AUAKqg14o_RR X*!nb9m>;q$2#B=~PI?E#E#dGl(!`?q literal 0 HcmV?d00001 From 390c51316c67c0616ab94d13b00bee2082936d28 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 29 Nov 2024 23:48:42 +0000 Subject: [PATCH 101/114] Bump com.thoughtworks.qdox:qdox from 2.1.0 to 2.2.0 Bumps [com.thoughtworks.qdox:qdox](https://github.com/paul-hammant/qdox) from 2.1.0 to 2.2.0. - [Commits](https://github.com/paul-hammant/qdox/compare/qdox-2.1.0...qdox-2.2.0) --- updated-dependencies: - dependency-name: com.thoughtworks.qdox:qdox dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 98a866f..bcdd7c0 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -20,7 +20,7 @@ com.thoughtworks.qdox qdox - 2.1.0 + 2.2.0 javax.inject From 859c03fdedae3e53d39cf1a0d3bfced43c6b083d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 Dec 2024 23:42:47 +0000 Subject: [PATCH 102/114] Bump org.assertj:assertj-core from 3.26.3 to 3.27.0 Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.26.3 to 3.27.0. - [Release notes](https://github.com/assertj/assertj/releases) - [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.26.3...assertj-build-3.27.0) --- updated-dependencies: - dependency-name: org.assertj:assertj-core dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index bcdd7c0..ab5a1bd 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -53,7 +53,7 @@ org.assertj assertj-core - 3.26.3 + 3.27.0 test From e50bd0871ccbff67b0b340c160e79499bc30025c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Jan 2025 23:11:52 +0000 Subject: [PATCH 103/114] Bump org.assertj:assertj-core from 3.27.0 to 3.27.1 Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.27.0 to 3.27.1. - [Release notes](https://github.com/assertj/assertj/releases) - [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.27.0...assertj-build-3.27.1) --- updated-dependencies: - dependency-name: org.assertj:assertj-core dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index ab5a1bd..f916280 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -53,7 +53,7 @@ org.assertj assertj-core - 3.27.0 + 3.27.1 test From fe8e3677a3c64f1b83b9ce48a18ac2a3e0599f80 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2025 23:54:12 +0000 Subject: [PATCH 104/114] Bump org.assertj:assertj-core from 3.27.1 to 3.27.2 Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.27.1 to 3.27.2. - [Release notes](https://github.com/assertj/assertj/releases) - [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.27.1...assertj-build-3.27.2) --- updated-dependencies: - dependency-name: org.assertj:assertj-core dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index f916280..56c089e 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -53,7 +53,7 @@ org.assertj assertj-core - 3.27.1 + 3.27.2 test From 1e651ae701f69dc1bb3b481d763e7983f1db392f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jan 2025 23:05:07 +0000 Subject: [PATCH 105/114] Bump org.assertj:assertj-core from 3.27.2 to 3.27.3 Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.27.2 to 3.27.3. - [Release notes](https://github.com/assertj/assertj/releases) - [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.27.2...assertj-build-3.27.3) --- updated-dependencies: - dependency-name: org.assertj:assertj-core dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- plexus-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 56c089e..e210294 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -53,7 +53,7 @@ org.assertj assertj-core - 3.27.2 + 3.27.3 test From 77283f38d7319e1bb9b52b65eca96c4e45e13137 Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Thu, 6 Feb 2025 10:38:03 +0100 Subject: [PATCH 106/114] Disable deploy job on GitHub --- .github/workflows/maven.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 22e19de..b0d67fc 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -28,8 +28,8 @@ jobs: [ {"jdk": "24-ea", "os": "ubuntu-latest", distribution: "temurin" } ] - deploy: - name: Deploy - needs: build - uses: codehaus-plexus/.github/.github/workflows/maven-deploy.yml@master - secrets: inherit +# deploy: +# name: Deploy +# needs: build +# uses: codehaus-plexus/.github/.github/workflows/maven-deploy.yml@master +# secrets: inherit From 452c8f157f29c2bdfe1d19dbe8c0c07aa641d559 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 8 Feb 2025 11:34:06 +0100 Subject: [PATCH 107/114] Bump org.codehaus.plexus:plexus from 19 to 20 (#203) * Bump org.codehaus.plexus:plexus from 19 to 20 Bumps [org.codehaus.plexus:plexus](https://github.com/codehaus-plexus/plexus-pom) from 19 to 20. - [Release notes](https://github.com/codehaus-plexus/plexus-pom/releases) - [Commits](https://github.com/codehaus-plexus/plexus-pom/commits) --- updated-dependencies: - dependency-name: org.codehaus.plexus:plexus dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Apply format for MD --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Slawomir Jaranowski --- README.md | 6 ++- .../src/site/markdown/locationmanager.md | 16 +++---- plexus-java/src/site/markdown/usage.md | 42 +++++++++---------- pom.xml | 2 +- 4 files changed, 35 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index 8d07dc3..d299f8d 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,14 @@ # Plexus Language + ![Build Status](https://github.com/codehaus-plexus/plexus-languages/workflows/GitHub%20CI/badge.svg) ![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/codehaus-plexus/plexus-languages/maven.yml?branch=master) [![Reproducible Builds](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/jvm-repo-rebuild/reproducible-central/master/content/org/codehaus/plexus/plexus-languages/badge.json)](https://github.com/jvm-repo-rebuild/reproducible-central/blob/master/content/org/codehaus/plexus/plexus-languages/README.md) Plexus Languages: - * [![Maven Central](https://img.shields.io/maven-central/v/org.codehaus.plexus/plexus-languages.svg?label=Maven%20Central)](https://search.maven.org/artifact/org.codehaus.plexus/plexus-languages) +* [![Maven Central](https://img.shields.io/maven-central/v/org.codehaus.plexus/plexus-languages.svg?label=Maven%20Central)](https://search.maven.org/artifact/org.codehaus.plexus/plexus-languages) Plexus Java: - * [![Maven Central](https://img.shields.io/maven-central/v/org.codehaus.plexus/plexus-java.svg?label=Maven%20Central)](https://search.maven.org/artifact/org.codehaus.plexus/plexus-java) +* [![Maven Central](https://img.shields.io/maven-central/v/org.codehaus.plexus/plexus-java.svg?label=Maven%20Central)](https://search.maven.org/artifact/org.codehaus.plexus/plexus-java) + diff --git a/plexus-java/src/site/markdown/locationmanager.md b/plexus-java/src/site/markdown/locationmanager.md index 9a8d4b9..1e03c94 100644 --- a/plexus-java/src/site/markdown/locationmanager.md +++ b/plexus-java/src/site/markdown/locationmanager.md @@ -1,6 +1,6 @@ The plexus-java library is created to have a solution for common activities, so this business logic doesn't have to be maintained at multiple places. The first provided feature was the `LocationManager` to analyze module desciptors and to decide which jars should end up on the modulepath and which on the classpath. The name was based on the [javax.tools.JavaFileManager.Location]. (https://docs.oracle.com/javase/10/docs/api/javax/tools/JavaFileManager.Location.html) -The library requires Java 8 to run, but contains optimized code for Java 9. By requiring Java 8 it was much easier to embed this library in several other projects. +The library requires Java 8 to run, but contains optimized code for Java 9. By requiring Java 8 it was much easier to embed this library in several other projects. This jar is a multi release jar (aka MRJAR), because it contains 2 implementations for the `BinaryModuleInfoParser`. If the Java runtime is 9 or above, the `java.lang.module.ModuleDescriptor` is used to read the `module-info.class`. If the runtime is Java 8, then ASM is used to read the module descriptor. @@ -18,13 +18,13 @@ There are 3 ways to create a `ResolvePathsRequest`: - `ResolvePathsRequest.ofStrings(Collection)` -As argument you pass all the archives and/or outputDirectories specified to build the project. +As argument you pass all the archives and/or outputDirectories specified to build the project. Additional methods are: - `setAdditionalModules`, in case the consumer wants to use `--add-modules` -- `setIncludeAllProviders`, in general would only be used at runtime, not during compile or test. In case `uses` is used, all modules with matching `provides` are added as well. +- `setIncludeAllProviders`, in general would only be used at runtime, not during compile or test. In case `uses` is used, all modules with matching `provides` are added as well. - `setJdkHome`, should point to Java 9 or above in case the runtime of this library is Java 8 @@ -37,9 +37,9 @@ If there's a `mainModuleDescriptor`, extract a `JavaModuleDescriptor` of it. Thi All pathElements of `ResolvePathsRequest.ofT` are transformed to Path instances. For every element the name will be resolved in the following order: 1. Module descriptor: verify if the jar or the directory contains `module-info.class`. If so, the its descriptor is transformed to a `JavaModuleDescriptor`, where its ModuleNameSource is marked as `ModuleNameSource.MODULEDESCRIPTOR` - -2. Manifest: verify if the jar or directory has a `META-INF/MANIFEST.MF` and if it contains the `Automatic-Module-Name` attribute. If so, an automatic `JavaModuleDescriptor` is created, where its ModuleNameSource is marked as `ModuleNameSource.MANIFEST`. - + +2. Manifest: verify if the jar or directory has a `META-INF/MANIFEST.MF` and if it contains the `Automatic-Module-Name` attribute. If so, an automatic `JavaModuleDescriptor` is created, where its ModuleNameSource is marked as `ModuleNameSource.MANIFEST`. + 3. Filename: try to extract the module name based on the filename. If the filename could be transformed to a module name (which is not always the case), an automatic `JavaModuleDescriptor` is created, where its ModuleNameSource is marked as `ModuleNameSource.FILENAME`. When there's an `IOException` with one of the pathElements, the exception is stored in the `ResolvePathsResult.pathExceptions` so the consumer can handle them separately. @@ -48,7 +48,7 @@ The result are a couple of Maps: * module name to `ModuleNameSource` -* module name to `JavaModuleDescriptor` +* module name to `JavaModuleDescriptor` # Phase 2: Resolve @@ -57,6 +57,7 @@ This contains recursive code and ensures that required modules are only evaluate All these pathElements must be placed on the modulepath, all other pathElements will be marked for the classPath. # Result + All results will be stored in a `ResolvePathsResult`. - `getClasspathElements()`, ordered collection of all pathElements that don't belong to the modulepath @@ -68,3 +69,4 @@ All results will be stored in a `ResolvePathsResult`. - `getPathElements()`, ordered map of the pathElements with their module descriptor - `getPathExceptions()`, map of pathElements containing only the elements that faced an exception. + diff --git a/plexus-java/src/site/markdown/usage.md b/plexus-java/src/site/markdown/usage.md index a43dc37..1e8891d 100644 --- a/plexus-java/src/site/markdown/usage.md +++ b/plexus-java/src/site/markdown/usage.md @@ -1,4 +1,3 @@ - # LocationManager.resolvePaths In order to use this class you must setup a `ResolvePathsRequest`, which requires a list of all the jars and output directories and the main module descriptor. @@ -7,33 +6,34 @@ You start by using `ResolvePathsRequest.ofXXX`, where XXX is either Files, Paths The `ResolvePathRequest` also contains: - * mainModuleDescriptor: the path or file of the main module descriptor, can either be `module-info.java` or `module-info.class` - - * additionalModules: the modules that will be addedusing `-add-modules` - - * jdkHome: in case you need to use a different JDK to extract the name from the modules. Can be interesting if the runtime is still Java 7. +* mainModuleDescriptor: the path or file of the main module descriptor, can either be `module-info.java` or `module-info.class` + +* additionalModules: the modules that will be addedusing `-add-modules` + +* jdkHome: in case you need to use a different JDK to extract the name from the modules. Can be interesting if the runtime is still Java 7. The `ResolvePathsResult` contains: - * mainModuleDescriptor: the module descriptor of the passed descriptor file. - - * pathElements: as a map in the same order as provided by the request. Every entry has a matching moduledescriptor when available. - - * classpathElements: all the pathElements which should end up on the classpath. - - * modulepathElements: all the pathElements which should end up on the modulepath. Per entry you get the source of the modulename which is either the moduledescriptor, the manifestfile of the filename. This information can be used to warn users in case they use automatic modules, which module names are not reliable yet. - - * pathExceptions: pathElements with their exception while trying to resolve it. Only pathElements with an exception are listed. - +* mainModuleDescriptor: the module descriptor of the passed descriptor file. + +* pathElements: as a map in the same order as provided by the request. Every entry has a matching moduledescriptor when available. + +* classpathElements: all the pathElements which should end up on the classpath. + +* modulepathElements: all the pathElements which should end up on the modulepath. Per entry you get the source of the modulename which is either the moduledescriptor, the manifestfile of the filename. This information can be used to warn users in case they use automatic modules, which module names are not reliable yet. + +* pathExceptions: pathElements with their exception while trying to resolve it. Only pathElements with an exception are listed. + # JavaVersion This is a String based, lazy-parsing implementation of a Java Version which can be used to compare versions. It's goal is to support to support the following patterns: - * [JEP 223: New Version-String Scheme](https://openjdk.java.net/jeps/223) - * [JEP 322: Time-Based Release Versioning](https://openjdk.java.net/jeps/322) +* [JEP 223: New Version-String Scheme](https://openjdk.java.net/jeps/223) +* [JEP 322: Time-Based Release Versioning](https://openjdk.java.net/jeps/322) Additional features: - * `JavaVersion.JAVA_SPECIFICATION_VERSION` represents `System.getProperty( "java.specification.version" )` - - * `JavaVersion.JAVA_VERSION` represents `System.getProperty( "java.version" )` +* `JavaVersion.JAVA_SPECIFICATION_VERSION` represents `System.getProperty( "java.specification.version" )` + +* `JavaVersion.JAVA_VERSION` represents `System.getProperty( "java.version" )` + diff --git a/pom.xml b/pom.xml index 28fac66..4f509a2 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus - 19 + 20 plexus-languages From 04fc2d11f6e3b78981fc3e62d64aef37c6d299a9 Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Sat, 8 Feb 2025 14:55:10 +0100 Subject: [PATCH 108/114] [maven-release-plugin] prepare release plexus-languages-1.4.0 --- plexus-java/pom.xml | 2 +- pom.xml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index e210294..0015682 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus-languages - 1.3.1-SNAPSHOT + 1.4.0 plexus-java diff --git a/pom.xml b/pom.xml index 4f509a2..c95357d 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ plexus-languages - 1.3.1-SNAPSHOT + 1.4.0 pom Plexus Languages @@ -22,7 +22,7 @@ scm:git:https://github.com/codehaus-plexus/plexus-languages.git scm:git:https://github.com/codehaus-plexus/plexus-languages.git - HEAD + plexus-languages-1.4.0 https://github.com/codehaus-plexus/plexus-languages/tree/plexus-languages @@ -42,7 +42,7 @@ scm:git:https://github.com/codehaus-plexus/plexus-languages.git - 2024-09-27T16:03:40Z + 2025-02-08T13:55:05Z From 48e01086bddf046ddfdfbc486285826454ded54e Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Sat, 8 Feb 2025 14:55:13 +0100 Subject: [PATCH 109/114] [maven-release-plugin] prepare for next development iteration --- plexus-java/pom.xml | 2 +- pom.xml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 0015682..899b700 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus-languages - 1.4.0 + 1.4.1-SNAPSHOT plexus-java diff --git a/pom.xml b/pom.xml index c95357d..6e899ee 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ plexus-languages - 1.4.0 + 1.4.1-SNAPSHOT pom Plexus Languages @@ -22,7 +22,7 @@ scm:git:https://github.com/codehaus-plexus/plexus-languages.git scm:git:https://github.com/codehaus-plexus/plexus-languages.git - plexus-languages-1.4.0 + HEAD https://github.com/codehaus-plexus/plexus-languages/tree/plexus-languages @@ -42,7 +42,7 @@ scm:git:https://github.com/codehaus-plexus/plexus-languages.git - 2025-02-08T13:55:05Z + 2025-02-08T13:55:13Z From cabd31e216057e19571a852a44fc10abf26b5f6e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 5 Apr 2025 11:21:49 +0200 Subject: [PATCH 110/114] Bump org.ow2.asm:asm from 9.7.1 to 9.8 (#204) --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Sylwester Lachiewicz --- .github/workflows/maven.yml | 6 +----- plexus-java/pom.xml | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index b0d67fc..faf344f 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -23,11 +23,7 @@ jobs: build: name: Build it uses: codehaus-plexus/.github/.github/workflows/maven.yml@master - with: - matrix-include: > - [ - {"jdk": "24-ea", "os": "ubuntu-latest", distribution: "temurin" } - ] + # deploy: # name: Deploy # needs: build diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 899b700..917871d 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -15,7 +15,7 @@ org.ow2.asm asm - 9.7.1 + 9.8 com.thoughtworks.qdox From c568b672ef83f2e0b90938b2849f91cef1980bce Mon Sep 17 00:00:00 2001 From: Sylwester Lachiewicz Date: Sat, 5 Apr 2025 11:30:41 +0200 Subject: [PATCH 111/114] [maven-release-plugin] prepare release plexus-languages-1.5.0 --- plexus-java/pom.xml | 2 +- pom.xml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 917871d..948f30d 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus-languages - 1.4.1-SNAPSHOT + 1.5.0 plexus-java diff --git a/pom.xml b/pom.xml index 6e899ee..aea319e 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ plexus-languages - 1.4.1-SNAPSHOT + 1.5.0 pom Plexus Languages @@ -22,7 +22,7 @@ scm:git:https://github.com/codehaus-plexus/plexus-languages.git scm:git:https://github.com/codehaus-plexus/plexus-languages.git - HEAD + plexus-languages-1.5.0 https://github.com/codehaus-plexus/plexus-languages/tree/plexus-languages @@ -42,7 +42,7 @@ scm:git:https://github.com/codehaus-plexus/plexus-languages.git - 2025-02-08T13:55:13Z + 2025-04-05T09:30:36Z From ad27fcb44bae2f2cac6b68346e5ce463aea5b521 Mon Sep 17 00:00:00 2001 From: Sylwester Lachiewicz Date: Sat, 5 Apr 2025 11:30:44 +0200 Subject: [PATCH 112/114] [maven-release-plugin] prepare for next development iteration --- plexus-java/pom.xml | 2 +- pom.xml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plexus-java/pom.xml b/plexus-java/pom.xml index 948f30d..c1a9931 100644 --- a/plexus-java/pom.xml +++ b/plexus-java/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus-languages - 1.5.0 + 1.5.1-SNAPSHOT plexus-java diff --git a/pom.xml b/pom.xml index aea319e..81102fd 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ plexus-languages - 1.5.0 + 1.5.1-SNAPSHOT pom Plexus Languages @@ -22,7 +22,7 @@ scm:git:https://github.com/codehaus-plexus/plexus-languages.git scm:git:https://github.com/codehaus-plexus/plexus-languages.git - plexus-languages-1.5.0 + HEAD https://github.com/codehaus-plexus/plexus-languages/tree/plexus-languages @@ -42,7 +42,7 @@ scm:git:https://github.com/codehaus-plexus/plexus-languages.git - 2025-04-05T09:30:36Z + 2025-04-05T09:30:44Z From 756f931b07dc8078d4c12beac2a3b88e3539b3db Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 23 May 2025 23:46:10 +0000 Subject: [PATCH 113/114] Bump org.codehaus.plexus:plexus from 20 to 21 Bumps [org.codehaus.plexus:plexus](https://github.com/codehaus-plexus/plexus-pom) from 20 to 21. - [Release notes](https://github.com/codehaus-plexus/plexus-pom/releases) - [Commits](https://github.com/codehaus-plexus/plexus-pom/commits) --- updated-dependencies: - dependency-name: org.codehaus.plexus:plexus dependency-version: '21' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 81102fd..6c9e5ea 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus - 20 + 21 plexus-languages From b29b2f4abc98e1f3103e4ede597b1ed062641972 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Jun 2025 23:25:26 +0000 Subject: [PATCH 114/114] Bump org.codehaus.plexus:plexus from 21 to 22 Bumps [org.codehaus.plexus:plexus](https://github.com/codehaus-plexus/plexus-pom) from 21 to 22. - [Release notes](https://github.com/codehaus-plexus/plexus-pom/releases) - [Commits](https://github.com/codehaus-plexus/plexus-pom/commits) --- updated-dependencies: - dependency-name: org.codehaus.plexus:plexus dependency-version: '22' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6c9e5ea..cf7264e 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.codehaus.plexus plexus - 21 + 22 plexus-languages