From 39c59f23d08a1e44f11fcce88e22423b06278da4 Mon Sep 17 00:00:00 2001 From: volodya-lombrozo Date: Wed, 19 Jul 2023 17:33:23 +0300 Subject: [PATCH 1/7] feat(#2266): Update jcabi-xml and use SaxonDocument in order to use XPath 2.0 features --- eo-maven-plugin/pom.xml | 8 +++++--- .../main/java/org/eolang/maven/DiscoverMojo.java | 8 ++++++-- .../java/org/eolang/maven/DiscoverMojoTest.java | 15 ++++++++++++--- 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/eo-maven-plugin/pom.xml b/eo-maven-plugin/pom.xml index 401bb76c6e..9c72bb6e71 100644 --- a/eo-maven-plugin/pom.xml +++ b/eo-maven-plugin/pom.xml @@ -22,7 +22,9 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --> - + 4.0.0 org.eolang @@ -81,12 +83,12 @@ SOFTWARE. net.sf.saxon Saxon-HE - runtime + compile com.jcabi jcabi-xml - + 0.28.0 org.apache.maven diff --git a/eo-maven-plugin/src/main/java/org/eolang/maven/DiscoverMojo.java b/eo-maven-plugin/src/main/java/org/eolang/maven/DiscoverMojo.java index d31d9dbe99..f82d14499d 100644 --- a/eo-maven-plugin/src/main/java/org/eolang/maven/DiscoverMojo.java +++ b/eo-maven-plugin/src/main/java/org/eolang/maven/DiscoverMojo.java @@ -24,6 +24,7 @@ package org.eolang.maven; import com.jcabi.log.Logger; +import com.jcabi.xml.SaxonDocument; import com.jcabi.xml.XML; import com.jcabi.xml.XMLDocument; import java.io.FileNotFoundException; @@ -37,6 +38,8 @@ import org.cactoos.iterable.Filtered; import org.cactoos.list.ListOf; import org.cactoos.set.SetOf; +import org.cactoos.text.TextOf; +import org.cactoos.text.UncheckedText; import org.eolang.maven.tojos.ForeignTojo; import org.eolang.maven.util.Rel; @@ -97,10 +100,11 @@ public void exec() throws FileNotFoundException { private Collection discover(final Path file) throws FileNotFoundException { final XML xml = new XMLDocument(file); - final Collection names = DiscoverMojo.names(xml, this.xpath(false)); + final XML saxon = new SaxonDocument(new UncheckedText(new TextOf(file)).asString()); + final Collection names = DiscoverMojo.names(saxon, this.xpath(false)); if (this.withVersions) { names.addAll( - DiscoverMojo.names(xml, this.xpath(true)) + DiscoverMojo.names(saxon, this.xpath(true)) ); } if (!xml.nodes("//o[@vararg]").isEmpty()) { diff --git a/eo-maven-plugin/src/test/java/org/eolang/maven/DiscoverMojoTest.java b/eo-maven-plugin/src/test/java/org/eolang/maven/DiscoverMojoTest.java index 30825bcfe6..9d26ac3775 100644 --- a/eo-maven-plugin/src/test/java/org/eolang/maven/DiscoverMojoTest.java +++ b/eo-maven-plugin/src/test/java/org/eolang/maven/DiscoverMojoTest.java @@ -32,6 +32,8 @@ import java.util.Map; import java.util.stream.Collectors; import org.cactoos.io.ResourceOf; +import org.eolang.maven.hash.ChNarrow; +import org.eolang.maven.hash.ChText; import org.eolang.maven.hash.CommitHashesMap; import org.eolang.maven.tojos.ForeignTojo; import org.eolang.maven.tojos.ForeignTojos; @@ -149,12 +151,13 @@ void discoversWithVersions(@TempDir final Path tmp) throws IOException { } @Test - @Disabled void discoversWithSeveralObjectsWithDifferentVersions( @TempDir final Path tmp ) throws IOException { + final CommitHashesMap.Fake hashes = new CommitHashesMap.Fake(); final FakeMaven maven = new FakeMaven(tmp) .with("withVersions", true) + .with("hashes", hashes) .withProgram( "+alias org.eolang.txt.sprintf\n", "[] > main", @@ -170,8 +173,14 @@ void discoversWithSeveralObjectsWithDifferentVersions( " nop" ) .execute(new FakeMaven.Discover()); - final String first = "org.eolang.txt.sprintf|0.28.1"; - final String second = "org.eolang.txt.sprintf|0.28.2"; + final String first = String.format( + "org.eolang.txt.sprintf|%s", + hashes.get("0.28.1").value() + ); + final String second = String.format( + "org.eolang.txt.sprintf|%s", + hashes.get("0.28.2").value() + ); final ForeignTojos tojos = maven.externalTojos(); MatcherAssert.assertThat( String.format(DiscoverMojoTest.SHOULD_CONTAIN, first), From d03a729b4a3465e1217dd55940253449c6c3a9a8 Mon Sep 17 00:00:00 2001 From: volodya-lombrozo Date: Wed, 19 Jul 2023 17:37:58 +0300 Subject: [PATCH 2/7] feat(#2266): Add new puzzle for SaxonConstructor --- .../src/main/java/org/eolang/maven/DiscoverMojo.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/eo-maven-plugin/src/main/java/org/eolang/maven/DiscoverMojo.java b/eo-maven-plugin/src/main/java/org/eolang/maven/DiscoverMojo.java index f82d14499d..4e299bac70 100644 --- a/eo-maven-plugin/src/main/java/org/eolang/maven/DiscoverMojo.java +++ b/eo-maven-plugin/src/main/java/org/eolang/maven/DiscoverMojo.java @@ -96,6 +96,12 @@ public void exec() throws FileNotFoundException { * @param file The .xmir file * @return List of foreign objects found * @throws FileNotFoundException If not found + * @todo:#2266 Use more convenient constructor for SaxonDocument. + * The current constructor for SaxonDocument is not convenient and requires a lot of + * code. It would be better to create SaxonDocument right from the file. + * When the related issue will be implemented in jcabi-xml (you can check the progress + * here) + * We have to change the constructor for SaxonDocument in this class and remove that puzzle. */ private Collection discover(final Path file) throws FileNotFoundException { From 5b086581d0c4ed26f6a5cd94bdb4e26c1cdb7ba4 Mon Sep 17 00:00:00 2001 From: volodya-lombrozo Date: Wed, 19 Jul 2023 17:38:48 +0300 Subject: [PATCH 3/7] feat(#2266): Remove the old puzzle --- .../src/test/java/org/eolang/maven/DiscoverMojoTest.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/eo-maven-plugin/src/test/java/org/eolang/maven/DiscoverMojoTest.java b/eo-maven-plugin/src/test/java/org/eolang/maven/DiscoverMojoTest.java index 9d26ac3775..bb97941b8f 100644 --- a/eo-maven-plugin/src/test/java/org/eolang/maven/DiscoverMojoTest.java +++ b/eo-maven-plugin/src/test/java/org/eolang/maven/DiscoverMojoTest.java @@ -49,12 +49,6 @@ * Test case for {@link DiscoverMojo}. * * @since 0.28.11 - * @todo #2259:30min Enable discoversWithSeveralObjectsWithDifferentVersions test. - * The discoversWithSeveralObjectsWithDifferentVersions test is disabled because we have found - * a bug in jcabi-xml library. You can read more about the bug - * here - * When the bug will be fixed, we have to enable discoversWithSeveralObjectsWithDifferentVersions - * test. */ final class DiscoverMojoTest { From ef8c7c49872e5addf1c19f6e795466bee7e8bf27 Mon Sep 17 00:00:00 2001 From: volodya-lombrozo Date: Wed, 19 Jul 2023 17:40:50 +0300 Subject: [PATCH 4/7] feat(#2266): update pom files --- eo-maven-plugin/pom.xml | 8 ++++---- pom.xml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/eo-maven-plugin/pom.xml b/eo-maven-plugin/pom.xml index 9c72bb6e71..32d1d23a91 100644 --- a/eo-maven-plugin/pom.xml +++ b/eo-maven-plugin/pom.xml @@ -22,9 +22,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --> - + 4.0.0 org.eolang @@ -83,12 +81,14 @@ SOFTWARE. net.sf.saxon Saxon-HE + compile com.jcabi jcabi-xml - 0.28.0 + org.apache.maven diff --git a/pom.xml b/pom.xml index 90c212bb33..e21991e160 100644 --- a/pom.xml +++ b/pom.xml @@ -188,7 +188,7 @@ SOFTWARE. com.jcabi jcabi-xml - 0.27.2 + 0.28.0 com.jcabi From c9a6edd8ec303b2cd930d8f88fb2d54c5eac818e Mon Sep 17 00:00:00 2001 From: volodya-lombrozo Date: Wed, 19 Jul 2023 17:50:42 +0300 Subject: [PATCH 5/7] feat(#2266): fix a puzzle description --- .../src/main/java/org/eolang/maven/DiscoverMojo.java | 2 +- .../src/test/java/org/eolang/maven/DiscoverMojoTest.java | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/eo-maven-plugin/src/main/java/org/eolang/maven/DiscoverMojo.java b/eo-maven-plugin/src/main/java/org/eolang/maven/DiscoverMojo.java index 4e299bac70..d4691d66e2 100644 --- a/eo-maven-plugin/src/main/java/org/eolang/maven/DiscoverMojo.java +++ b/eo-maven-plugin/src/main/java/org/eolang/maven/DiscoverMojo.java @@ -96,7 +96,7 @@ public void exec() throws FileNotFoundException { * @param file The .xmir file * @return List of foreign objects found * @throws FileNotFoundException If not found - * @todo:#2266 Use more convenient constructor for SaxonDocument. + * @todo #2266:30min Use more convenient constructor for SaxonDocument. * The current constructor for SaxonDocument is not convenient and requires a lot of * code. It would be better to create SaxonDocument right from the file. * When the related issue will be implemented in jcabi-xml (you can check the progress diff --git a/eo-maven-plugin/src/test/java/org/eolang/maven/DiscoverMojoTest.java b/eo-maven-plugin/src/test/java/org/eolang/maven/DiscoverMojoTest.java index bb97941b8f..133d39f676 100644 --- a/eo-maven-plugin/src/test/java/org/eolang/maven/DiscoverMojoTest.java +++ b/eo-maven-plugin/src/test/java/org/eolang/maven/DiscoverMojoTest.java @@ -32,14 +32,11 @@ import java.util.Map; import java.util.stream.Collectors; import org.cactoos.io.ResourceOf; -import org.eolang.maven.hash.ChNarrow; -import org.eolang.maven.hash.ChText; import org.eolang.maven.hash.CommitHashesMap; import org.eolang.maven.tojos.ForeignTojo; import org.eolang.maven.tojos.ForeignTojos; import org.hamcrest.MatcherAssert; import org.hamcrest.Matchers; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; import org.junit.jupiter.params.ParameterizedTest; From d895bfb73bcd34ed90ae08e310416d261dcf4ab7 Mon Sep 17 00:00:00 2001 From: volodya-lombrozo Date: Wed, 19 Jul 2023 18:32:24 +0300 Subject: [PATCH 6/7] feat(#2266): use Map instead of CommitHashesMap.Fake() --- .../src/test/java/org/eolang/maven/DiscoverMojoTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/eo-maven-plugin/src/test/java/org/eolang/maven/DiscoverMojoTest.java b/eo-maven-plugin/src/test/java/org/eolang/maven/DiscoverMojoTest.java index 133d39f676..c47f01aa94 100644 --- a/eo-maven-plugin/src/test/java/org/eolang/maven/DiscoverMojoTest.java +++ b/eo-maven-plugin/src/test/java/org/eolang/maven/DiscoverMojoTest.java @@ -32,6 +32,7 @@ import java.util.Map; import java.util.stream.Collectors; import org.cactoos.io.ResourceOf; +import org.eolang.maven.hash.CommitHash; import org.eolang.maven.hash.CommitHashesMap; import org.eolang.maven.tojos.ForeignTojo; import org.eolang.maven.tojos.ForeignTojos; @@ -145,7 +146,7 @@ void discoversWithVersions(@TempDir final Path tmp) throws IOException { void discoversWithSeveralObjectsWithDifferentVersions( @TempDir final Path tmp ) throws IOException { - final CommitHashesMap.Fake hashes = new CommitHashesMap.Fake(); + final Map hashes = new CommitHashesMap.Fake(); final FakeMaven maven = new FakeMaven(tmp) .with("withVersions", true) .with("hashes", hashes) From 2fb1607c68248a9c224b841c9b4b0dd973fe60e5 Mon Sep 17 00:00:00 2001 From: volodya-lombrozo Date: Wed, 19 Jul 2023 19:37:55 +0300 Subject: [PATCH 7/7] feat(#2266): inline xml variable --- .../src/main/java/org/eolang/maven/DiscoverMojo.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/eo-maven-plugin/src/main/java/org/eolang/maven/DiscoverMojo.java b/eo-maven-plugin/src/main/java/org/eolang/maven/DiscoverMojo.java index d4691d66e2..ed8739db56 100644 --- a/eo-maven-plugin/src/main/java/org/eolang/maven/DiscoverMojo.java +++ b/eo-maven-plugin/src/main/java/org/eolang/maven/DiscoverMojo.java @@ -105,7 +105,6 @@ public void exec() throws FileNotFoundException { */ private Collection discover(final Path file) throws FileNotFoundException { - final XML xml = new XMLDocument(file); final XML saxon = new SaxonDocument(new UncheckedText(new TextOf(file)).asString()); final Collection names = DiscoverMojo.names(saxon, this.xpath(false)); if (this.withVersions) { @@ -113,7 +112,7 @@ private Collection discover(final Path file) DiscoverMojo.names(saxon, this.xpath(true)) ); } - if (!xml.nodes("//o[@vararg]").isEmpty()) { + if (!new XMLDocument(file).nodes("//o[@vararg]").isEmpty()) { names.add("org.eolang.tuple"); } if (names.isEmpty()) {