You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by kw...@apache.org on 2022/01/17 17:59:38 UTC
[jackrabbit-filevault-package-maven-plugin] branch master updated: JCRVLT-595 prevent NPE when validate-package is executed outside project (#67)
This is an automated email from the ASF dual-hosted git repository.
kwin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jackrabbit-filevault-package-maven-plugin.git
The following commit(s) were added to refs/heads/master by this push:
new 491fb90 JCRVLT-595 prevent NPE when validate-package is executed outside project (#67)
491fb90 is described below
commit 491fb901477126b5851a9e9fdc816422130a227f
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Mon Jan 17 18:59:33 2022 +0100
JCRVLT-595 prevent NPE when validate-package is executed outside project (#67)
---
.../maven/packaging/AbstractValidateMojo.java | 18 ++++++++++-----
.../maven/packaging/AbstractValidateMojoTest.java | 27 ++++++++++++++++++++--
.../maven/packaging/it/ProjectBuilder.java | 2 +-
.../maven/packaging/it/ValidatePackageIT.java | 14 ++++++++++-
4 files changed, 51 insertions(+), 10 deletions(-)
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojo.java
index e56d239..9c5e4c7 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojo.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojo.java
@@ -113,8 +113,8 @@ public abstract class AbstractValidateMojo extends AbstractMojo {
@Deprecated
private boolean failOnDependencyErrors;
- /** The Maven project (might be {@code null}) */
- @Parameter(property = "project", readonly = true, required = false)
+ /** The Maven project (never {@code null}, but might be dummy project returning {@code null} for all methods if running outside a {@code pom.xml} context) */
+ @Parameter(defaultValue = "${project}", readonly = true, required = false)
protected MavenProject project;
@Parameter(defaultValue = "${mojoExecution}", readonly = true, required = true)
@@ -201,10 +201,16 @@ public abstract class AbstractValidateMojo extends AbstractMojo {
public static final Artifact IGNORE_ARTIFACT = new DefaultArtifact("ignore", "ignore", "1.0", "", "", "", null);
private static Version fileVaultValidationBundleVersion = null;
- private final static Version VERSION_3_5_4 = Version.parseVersion("3.5.4");
-
- protected String getProjectRelativeFilePath(Path file) {
- return "'" + project.getBasedir().toPath().relativize(file).toString() + "'";
+ private static final Version VERSION_3_5_4 = Version.parseVersion("3.5.4");
+
+ protected String getProjectRelativeFilePath(Path path) {
+ final Path shortenedPath;
+ if (project != null && project.getBasedir() != null) {
+ shortenedPath = project.getBasedir().toPath().relativize(path);
+ } else {
+ shortenedPath = path;
+ }
+ return "'" + shortenedPath.toString() + "'";
}
public AbstractValidateMojo() {
diff --git a/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojoTest.java b/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojoTest.java
index f2be2eb..9f66c6e 100644
--- a/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojoTest.java
+++ b/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojoTest.java
@@ -16,7 +16,12 @@
*/
package org.apache.jackrabbit.filevault.maven.packaging;
+import static org.junit.Assert.assertEquals;
+
import java.io.IOException;
+import java.nio.channels.UnsupportedAddressTypeException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
@@ -26,13 +31,18 @@ import org.apache.jackrabbit.vault.packaging.Dependency;
import org.apache.jackrabbit.vault.packaging.PackageId;
import org.apache.maven.artifact.DefaultArtifact;
import org.apache.maven.artifact.InvalidArtifactRTException;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugin.logging.SystemStreamLog;
+import org.apache.maven.project.MavenProject;
import org.hamcrest.MatcherAssert;
import org.hamcrest.Matchers;
import org.junit.Assert;
import org.junit.Test;
import org.osgi.framework.Version;
+import aQute.lib.mavenpasswordobfuscator.MavenPasswordObfuscator;
+
public class AbstractValidateMojoTest {
@@ -96,9 +106,22 @@ public class AbstractValidateMojoTest {
list.sort(new AbstractValidateMojo.DotContentXmlFirstComparator());
MatcherAssert.assertThat(list, Matchers.contains(".content.xml", ".content.xml", "someEntryA", "someEntryB"));
}
-
+
@Test
public void testGetFileVaultValidatorVersion() throws IOException {
- Assert.assertTrue(AbstractValidateMojo.getFileVaultValidationBundleVersion().compareTo(Version.parseVersion("3.5.4")) >= 0);
+ Assert.assertTrue("FileVault version being detected is " + AbstractValidateMojo.getFileVaultValidationBundleVersion(), AbstractValidateMojo.getFileVaultValidationBundleVersion().compareTo(Version.parseVersion("3.5.4")) >= 0);
+ }
+
+ @Test
+ public void testGetProjectRelativeFilePathWithoutRealProject() {
+ AbstractValidateMojo mojo = new AbstractValidateMojo() {
+ @Override
+ public void doExecute(ValidationHelper validationHelper) throws MojoExecutionException, MojoFailureException {
+ throw new UnsupportedOperationException();
+ }
+ };
+ mojo.project = new MavenProject();
+ Path path = Paths.get("").toAbsolutePath();
+ assertEquals("'" + path + "'", mojo.getProjectRelativeFilePath(path));
}
}
diff --git a/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ProjectBuilder.java b/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ProjectBuilder.java
index 111bf8e..19cf332 100644
--- a/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ProjectBuilder.java
+++ b/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ProjectBuilder.java
@@ -133,7 +133,7 @@ public class ProjectBuilder {
* @return the version of the current {@code filevault-package-maven-plugin}
* @throws IllegalArgumentException if the version cannot be determined.
*/
- private String getPluginVersion() {
+ static String getPluginVersion() {
String pluginVersion = System.getProperty("plugin.version");
if (pluginVersion == null) {
try (FileReader fileReader = new FileReader("pom.xml")) {
diff --git a/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ValidatePackageIT.java b/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ValidatePackageIT.java
index 7650bbe..90daa93 100644
--- a/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ValidatePackageIT.java
+++ b/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ValidatePackageIT.java
@@ -62,7 +62,7 @@ public class ValidatePackageIT {
MatcherAssert.assertThat(actualRecords, Matchers.contains(expectedRecords.stream().map(r -> new CSVRecordMatcher(r, 3)).toArray(CSVRecordMatcher[]::new)));
}
}
-
+
@Test
public void testValidProjectWithZip() throws Exception {
verify("project-with-zip", false, null);
@@ -73,6 +73,18 @@ public class ValidatePackageIT {
verify("classifier-project", false, "test");
}
+ @Test
+ public void testValidPackageWithoutProject() throws Exception {
+ //File testPackage = new File(ProjectBuilder.TEST_PROJECTS_ROOT + "/../test-content/");
+ new ProjectBuilder()
+ // some new dir
+ .setTestProjectDir("../test-content")
+ .setTestGoals(String.format("org.apache.jackrabbit:filevault-package-maven-plugin:%s:validate-package", ProjectBuilder.getPluginVersion()))
+ .setProperty("vault.packageToValidate", "test-package.zip")
+ .setVerifyPackageContents(false)
+ .build();
+ }
+
private static final class CSVRecordMatcher extends TypeSafeMatcher<CSVRecord> {
private final CSVRecord expectedCsvRecord;
private final Collection<Integer> ignoredValueIndices;