JCRVLT-415 call validator for empty folders as well
git-svn-id: https://svn.apache.org/repos/asf/jackrabbit/commons/filevault-package-maven-plugin/trunk@1874873 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/pom.xml b/pom.xml
index 8cc0ccf..efc5464 100644
--- a/pom.xml
+++ b/pom.xml
@@ -45,7 +45,7 @@
<slf4j.version>1.7.5</slf4j.version>
<jackrabbit.version>2.20.0</jackrabbit.version>
<oak.version>1.20.0</oak.version>
- <filevault.version>3.4.2</filevault.version>
+ <filevault.version>3.4.3-SNAPSHOT</filevault.version>
</properties>
<prerequisites>
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidateFilesMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidateFilesMojo.java
index c5633b2..b892eee 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidateFilesMojo.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidateFilesMojo.java
@@ -202,23 +202,46 @@
scanner.scan();
getLog().info("Scanning baseDir '" + baseDir + "'...");
for (String relativeFile : scanner.getIncludedFiles()) {
- File absoluteFile = new File(baseDir, relativeFile);
- validationHelper.clearPreviousValidationMessages(buildContext, absoluteFile);
- getLog().debug("Validating file '" + absoluteFile + "'...");
- try (InputStream input = new FileInputStream(absoluteFile)) {
- final Collection<ValidationViolation> messages;
- if (isMetaInf) {
- messages = executor.validateMetaInf(input, Paths.get(relativeFile), baseDir.toPath());
- } else {
- messages = executor.validateJcrRoot(input, Paths.get(relativeFile), baseDir.toPath());
- }
- validationHelper.printMessages(messages, getLog(), buildContext, project.getBasedir().toPath());
- } catch (FileNotFoundException e) {
- getLog().error("Could not find file " + absoluteFile, e);
- } catch (IOException e) {
- getLog().error("Could not validate file " + absoluteFile, e);
- }
+ validateFile(executor, baseDir, isMetaInf, relativeFile);
}
+ for (String relativeFile : scanner.getIncludedDirectories()) {
+ validateFolder(executor, baseDir, isMetaInf, relativeFile);
+ }
+ }
+
+
+ private void validateFile(ValidationExecutor executor, File baseDir, boolean isMetaInf, String relativeFile) {
+ File absoluteFile = new File(baseDir, relativeFile);
+ validationHelper.clearPreviousValidationMessages(buildContext, absoluteFile);
+ getLog().debug("Validating file '" + absoluteFile + "'...");
+ try (InputStream input = new FileInputStream(absoluteFile)) {
+ validateInputStream(executor, input, baseDir, isMetaInf, relativeFile);
+ } catch (FileNotFoundException e) {
+ getLog().error("Could not find file " + absoluteFile, e);
+ } catch (IOException e) {
+ getLog().error("Could not validate file " + absoluteFile, e);
+ }
+ }
+
+ private void validateFolder(ValidationExecutor executor, File baseDir, boolean isMetaInf, String relativeFile) {
+ File absoluteFile = new File(baseDir, relativeFile);
+ validationHelper.clearPreviousValidationMessages(buildContext, absoluteFile);
+ getLog().debug("Validating folder '" + absoluteFile + "'...");
+ try {
+ validateInputStream(executor, null, baseDir, isMetaInf, relativeFile);
+ } catch (IOException e) {
+ getLog().error("Could not validate folder " + absoluteFile, e);
+ }
+ }
+
+ private void validateInputStream(ValidationExecutor executor, InputStream input, File baseDir, boolean isMetaInf, String relativeFile) throws IOException {
+ final Collection<ValidationViolation> messages;
+ if (isMetaInf) {
+ messages = executor.validateMetaInf(input, Paths.get(relativeFile), baseDir.toPath());
+ } else {
+ messages = executor.validateJcrRoot(input, Paths.get(relativeFile), baseDir.toPath());
+ }
+ validationHelper.printMessages(messages, getLog(), buildContext, project.getBasedir().toPath());
}
/**
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java
index d24ccf3..6fc430b 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java
@@ -41,6 +41,7 @@
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.plugins.annotations.ResolutionScope;
+import org.jetbrains.annotations.Nullable;
import org.xml.sax.SAXException;
@@ -103,6 +104,7 @@
ValidationExecutor executor) throws IOException, SAXException, ParserConfigurationException {
for (Archive.Entry childEntry : entry.getChildren()) {
if (childEntry.isDirectory()) {
+ validateInputStream(null, entryPath.resolve(childEntry.getName()), packagePath, context, executor);
validateEntry(archive, childEntry, entryPath.resolve(childEntry.getName()), packagePath, context, executor);
} else {
try (InputStream input = archive.openInputStream(childEntry)) {
@@ -112,7 +114,7 @@
}
}
- private void validateInputStream(InputStream inputStream, Path entryPath, Path packagePath, ArchiveValidationContextImpl context,
+ private void validateInputStream(@Nullable InputStream inputStream, Path entryPath, Path packagePath, ArchiveValidationContextImpl context,
ValidationExecutor executor) throws IOException, SAXException, ParserConfigurationException {
Collection<ValidationViolation> messages = new LinkedList<>();
if (entryPath.startsWith(Constants.META_INF)) {
@@ -123,7 +125,7 @@
messages.addAll(executor.validateJcrRoot(inputStream, relativeJcrPath, packagePath.resolve(Constants.ROOT_DIR)));
// in case this is a subpackage
- if (entryPath.getFileName().toString().endsWith(VaultMojo.PACKAGE_EXT)) {
+ if (inputStream != null && entryPath.getFileName().toString().endsWith(VaultMojo.PACKAGE_EXT)) {
Path subPackagePath = context.getPackageRootPath().resolve(entryPath);
getLog().info("Start validating sub package '" + subPackagePath + "'...");
// can't use archive.getSubPackage because that holds the wrong metadata
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidationHelper.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidationHelper.java
index 1ba7665..6f317ad 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidationHelper.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidationHelper.java
@@ -121,7 +121,7 @@
StringBuilder message = new StringBuilder("ValidationViolation: ");
message.append("\"").append(getMessage(violation)).append("\"");
if (violation.getFilePath() != null) {
- message.append(", filePath=").append(baseDirectory.relativize(violation.getFilePath()));
+ message.append(", filePath=").append(baseDirectory.relativize(violation.getAbsoluteFilePath()));
}
if (violation.getNodePath() != null) {
message.append(", nodePath=").append(violation.getNodePath());