You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by tr...@apache.org on 2018/11/25 23:53:48 UTC
svn commit: r1847445 - in
/jackrabbit/commons/filevault-package-maven-plugin/trunk: ./
src/main/java/org/apache/jackrabbit/filevault/maven/packaging/
src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/
src/test/resources/test-projects/def...
Author: tripod
Date: Sun Nov 25 23:53:48 2018
New Revision: 1847445
URL: http://svn.apache.org/viewvc?rev=1847445&view=rev
Log:
JCRVLT-279 fail for duplicate entries (closes #13)
Added:
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed/
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed-not-failing/
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed-not-failing/expected-files-with-checksums.txt
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed-not-failing/jcr_root/
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed-not-failing/jcr_root/apps/
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed-not-failing/jcr_root/apps/install/
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed-not-failing/jcr_root/apps/install/.content.xml
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed-not-failing/jcr_root/apps/install/jcr-2.0.jar
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed-not-failing/pom.xml
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed/jcr_root/
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed/jcr_root/apps/
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed/jcr_root/apps/install/
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed/jcr_root/apps/install/.content.xml
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed/jcr_root/apps/install/jcr-2.0.jar
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed/pom.xml
Modified:
jackrabbit/commons/filevault-package-maven-plugin/trunk/pom.xml
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractPackageMojo.java
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/GenerateMetadataMojo.java
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/DefaultProjectIT.java
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ProjectBuilder.java
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/generic-unusal-jcrroot/expected-files.txt
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/generic-with-builtcd/expected-files.txt
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/generic/expected-files.txt
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/resource/expected-files.txt
Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/pom.xml?rev=1847445&r1=1847444&r2=1847445&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/pom.xml (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/pom.xml Sun Nov 25 23:53:48 2018
@@ -153,7 +153,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
- <version>2.20.1</version>
+ <version>2.22.1</version>
<executions>
<execution>
<goals>
@@ -169,6 +169,17 @@
</executions>
</plugin>
<!-- ====================================================================== -->
+ <!-- S U R E F I R E P L U G I N -->
+ <!-- ====================================================================== -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>2.22.1</version>
+ <configuration>
+ <trimStackTrace>false</trimStackTrace>
+ </configuration>
+ </plugin>
+ <!-- ====================================================================== -->
<!-- S I T E P L U G I N -->
<!-- ====================================================================== -->
<plugin>
Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractPackageMojo.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractPackageMojo.java?rev=1847445&r1=1847444&r2=1847445&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractPackageMojo.java (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractPackageMojo.java Sun Nov 25 23:53:48 2018
@@ -48,6 +48,7 @@ public abstract class AbstractPackageMoj
/**
* Adds a path prefix to all resources useful for shallower source trees.
+ * This does not apply to files in {@link #workDirectory}.
*/
@Parameter(property = "vault.prefix")
String prefix = "";
@@ -62,8 +63,8 @@ public abstract class AbstractPackageMoj
}
/**
- * The directory containing the content to be packaged up into the content
- * package.
+ * The directory containing the metadata to be packaged up into the content package.
+ * Basically containing all files/folders being generated by goal "generate-metadata".
*/
@Parameter(
defaultValue = "${project.build.directory}/vault-work",
Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/GenerateMetadataMojo.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/GenerateMetadataMojo.java?rev=1847445&r1=1847444&r2=1847445&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/GenerateMetadataMojo.java (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/GenerateMetadataMojo.java Sun Nov 25 23:53:48 2018
@@ -71,7 +71,9 @@ import aQute.bnd.header.Parameters;
import aQute.bnd.osgi.Processor;
/**
- * Maven goal which generates the metadata ending up in the package like {@code filter.xml}, {@code properties.xml} as well as the {@code MANIFEST.MF}.
+ * Maven goal which generates the metadata ending up in the package like {@code META-INF/MANIFEST.MF} as well as the
+ * files ending up in {@code META-INF/vault} like {@code filter.xml}, {@code properties.xml}, {@code config.xml} and
+ * {@code settings.xml}. Those files will be written to the directory given via parameter {@link #workDirectory}.
* In addition performs some validations.
*/
@Mojo(
Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java?rev=1847445&r1=1847444&r2=1847445&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java Sun Nov 25 23:53:48 2018
@@ -17,7 +17,6 @@
package org.apache.jackrabbit.filevault.maven.packaging;
import java.io.File;
-import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
@@ -46,7 +45,10 @@ import org.apache.maven.plugins.annotati
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.plugins.annotations.ResolutionScope;
import org.codehaus.plexus.archiver.ArchiveEntry;
+import org.codehaus.plexus.archiver.Archiver;
+import org.codehaus.plexus.archiver.ArchiverException;
import org.codehaus.plexus.archiver.FileSet;
+import org.codehaus.plexus.archiver.ResourceIterator;
import org.codehaus.plexus.util.AbstractScanner;
import org.codehaus.plexus.util.DirectoryScanner;
import org.codehaus.plexus.util.FileUtils;
@@ -109,6 +111,17 @@ public class VaultMojo extends AbstractP
private boolean failOnUncoveredSourceFiles;
/**
+ * Set to {@code false} to not fail the build in case of files/folders being added to the resulting
+ * package more than once. Usually this indicates overlapping with embedded files or overlapping filter rules.
+ */
+ @Parameter(
+ property = "vault.failOnDuplicateEntries",
+ required = true,
+ defaultValue = "true"
+ )
+ private boolean failOnDuplicateEntries;
+
+ /**
* The name of the generated package ZIP file without the ".zip" file
* extension.
*/
@@ -139,9 +152,15 @@ public class VaultMojo extends AbstractP
/**
* The file name patterns to exclude in addition to the ones listed in
* {@link AbstractScanner#DEFAULTEXCLUDES}. The format of each pattern is described in {@link DirectoryScanner}.
+ * The comparison is against the path relative to the according filter root.
+ * Since this is hardly predictable it is recommended to use only filename/directory name patterns here
+ * but not take into account file system hierarchies!
+ * <p>
+ * Each value is either a regex pattern if enclosed within {@code %regex[} and {@code ]}, otherwise an
+ * <a href="https://ant.apache.org/manual/dirtasks.html#patterns">Ant pattern</a>.
*/
@Parameter(property = "vault.excludes",
- defaultValue="**/.vlt,**/.vltignore,**/.DS_Store",
+ defaultValue="**/.vlt,**/.vltignore",
required = true)
private String[] excludes;
@@ -172,7 +191,7 @@ public class VaultMojo extends AbstractP
}
return fileSet(directory)
.prefixed(prefix)
- .includeExclude(null, excludes.toArray(new String[excludes.size()]))
+ .includeExclude(null, excludes.toArray(new String[0]))
.includeEmptyDirs(true);
}
@@ -180,14 +199,14 @@ public class VaultMojo extends AbstractP
* Executes this mojo
*/
@Override
- public void execute() throws MojoExecutionException, MojoFailureException {
+ public void execute() throws MojoExecutionException {
final File finalFile = new File(outputDirectory, finalName + PACKAGE_EXT);
try {
// find the meta-inf source directory
File metaInfDirectory = getMetaInfDir();
// find the source directory
- File jcrSourceDirectory = null;
+ final File jcrSourceDirectory;
if (builtContentDirectory != null) {
getLog().warn("The 'builtContentDirectory' is deprecated. Please use the new 'jcrRootSourceDirectory' instead.");
jcrSourceDirectory = builtContentDirectory;
@@ -203,18 +222,26 @@ public class VaultMojo extends AbstractP
Map<String, File> embeddedFiles = getEmbeddedFilesMap();
ContentPackageArchiver contentPackageArchiver = new ContentPackageArchiver();
+ if (failOnDuplicateEntries) {
+ contentPackageArchiver.setDuplicateBehavior(Archiver.DUPLICATES_FAIL);
+ }
contentPackageArchiver.setIncludeEmptyDirs(true);
if (metaInfDirectory != null) {
- // ensure that generated filter.xml comes first
- File filterXML = getFilterFile();
- if (filterXML.exists()) {
- contentPackageArchiver.addFile(filterXML, "META-INF/vault/filter.xml");
- }
- contentPackageArchiver.addFileSet(createFileSet(metaInfDirectory, "META-INF/vault/"));
+ // first add the metadata from the metaInfDirectory (they should take precedence over the generated ones from workDirectory,
+ // except for the filter.xml, which should always come from the work directory)
+ contentPackageArchiver.addFileSet(createFileSet(metaInfDirectory, "META-INF/vault/", Collections.singletonList("filter.xml")));
}
- contentPackageArchiver.addFileSet(createFileSet(workDirectory, "", Collections.singletonList("META-INF/MANIFEST.MF")));
- contentPackageArchiver.addFileSet(createFileSet(workDirectory, "", null));
-
+ // then add all files from the workDirectory (they might overlap with the ones from metaInfDirectory, therefore only add the non-conflicting ones)
+ Collection<File> workDirectoryFilesNotYetExistingInArchive = getUncoveredFiles(workDirectory, "", contentPackageArchiver.getFiles().keySet(), Collections.singletonList("META-INF/MANIFEST.MF"));
+ for (File workDirectoryFile : workDirectoryFilesNotYetExistingInArchive) {
+ contentPackageArchiver.addFile(workDirectoryFile, workDirectory.toPath().relativize(workDirectoryFile.toPath()).toString());
+ }
+
+ // add embedded files
+ for (Map.Entry<String, File> entry : embeddedFiles.entrySet()) {
+ contentPackageArchiver.addFile(entry.getValue(), entry.getKey());
+ }
+
// include content from build only if it exists
if (jcrSourceDirectory != null && jcrSourceDirectory.exists()) {
// See GRANITE-16348
@@ -241,23 +268,58 @@ public class VaultMojo extends AbstractP
continue;
}
+ boolean isFilterRootDirectory = true;
File rootDirectory = new File(jcrSourceDirectory, relPath);
// traverse the ancestors until we find a existing directory (see CQ-4204625)
while ((!rootDirectory.exists() || !rootDirectory.isDirectory())
- && !jcrSourceDirectory.equals(rootDirectory)) {
+ && !jcrSourceDirectory.equals(rootDirectory) && !fullCoverage.isFile()) {
rootDirectory = rootDirectory.getParentFile();
relPath = StringUtils.chomp(relPath, "/");
+ fullCoverage = new File(rootDirectory, relPath + ".xml");
+ isFilterRootDirectory = false;
}
- if (!jcrSourceDirectory.equals(rootDirectory)) {
+ // either parent node was covered by a full coverage aggregate
+ if (fullCoverage.isFile()) {
+ rootPath = FileUtils.normalize(JCR_ROOT + prefix + relPath + ".xml");
+ contentPackageArchiver.addFile(fullCoverage, rootPath);
+ } else {
+ // or a simple folder containing a ".content.xml"
rootPath = FileUtils.normalize(JCR_ROOT + prefix + relPath);
- contentPackageArchiver.addFileSet(createFileSet(rootDirectory, rootPath + "/"));
+ // is the folder the filter root?
+ if (isFilterRootDirectory) {
+ // then just include the full folder
+ contentPackageArchiver.addFileSet(createFileSet(rootDirectory, rootPath + "/"));
+ } else {
+ // otherwise, make sure to not add child directories which are not direct ancestors of the filter roots
+ contentPackageArchiver.addFileSet(createFileSet(rootDirectory, rootPath + "/",
+ Collections.singletonList("%regex[^(?!\\.content\\.xml).*]")));
+ }
}
}
}
-
- Collection<File> uncoveredFiles = getUncoveredFiles(jcrSourceDirectory, prefix, contentPackageArchiver.getFiles().keySet());
+
+ // check for for duplicates in the content package
+ if (failOnDuplicateEntries) {
+ try {
+ for (ResourceIterator iter = contentPackageArchiver.getResources(); iter.hasNext();) {
+ iter.next();
+ }
+ } catch (ArchiverException e) {
+ // this is most probably a duplicate exception
+ // since there is no dedicated exception check if the message starts with "Duplicate file"
+ if (e.getMessage() != null && e.getMessage().startsWith("Duplicate file")) {
+ throw new MojoFailureException("Found duplicate files in content package, most probably you have overlapping filter roots " +
+ "or you embed a file which is already there in 'jcrRootSourceDirectory'. For details check the nested exception!", e);
+ } else {
+ throw e;
+ }
+ }
+ }
+
+ // check for uncovered files
+ Collection<File> uncoveredFiles = getUncoveredFiles(jcrSourceDirectory, JCR_ROOT + prefix, contentPackageArchiver.getFiles().keySet(), null);
if (!uncoveredFiles.isEmpty()) {
for (File uncoveredFile : uncoveredFiles) {
getLog().warn("File " + uncoveredFile + " not covered by a filter rule and therefore not contained in the resulting package");
@@ -268,10 +330,6 @@ public class VaultMojo extends AbstractP
}
}
- for (Map.Entry<String, File> entry : embeddedFiles.entrySet()) {
- contentPackageArchiver.addFile(entry.getValue(), entry.getKey());
- }
-
//NPR-14102 - Automated check for index definition
if (!allowIndexDefinitions) {
FileValidator fileValidator = new FileValidator();
@@ -312,13 +370,26 @@ public class VaultMojo extends AbstractP
}
}
- private Collection<File> getUncoveredFiles(final File sourceDirectory, final String prefix, final Collection<String> entryNames) throws IOException {
+ /**
+ *
+ * @param sourceDirectory
+ * @param prefix
+ * @param entryNames
+ * @param additionalExcludes
+ * @return the absolute file names in the source directory which are not already listed in {@code entryNames}.
+ */
+ private Collection<File> getUncoveredFiles(final File sourceDirectory, final String prefix, final Collection<String> entryNames,
+ List<String> additionalExcludes) {
/*
* similar method as in {@link org.codehaus.plexus.components.io.resources.PlexusIoFileResourceCollection#getResources();}
*/
DirectoryScanner scanner = new DirectoryScanner();
scanner.setBasedir(sourceDirectory);
- scanner.setExcludes(excludes);
+ List<String> excludes = new LinkedList<>(Arrays.asList(this.excludes));
+ if (additionalExcludes != null) {
+ excludes.addAll(additionalExcludes);
+ }
+ scanner.setExcludes(excludes.toArray(new String[0]));
scanner.addDefaultExcludes();
scanner.scan();
return getUncoveredFiles(sourceDirectory, scanner.getIncludedFiles(), prefix, entryNames);
@@ -327,14 +398,14 @@ public class VaultMojo extends AbstractP
private Collection<File> getUncoveredFiles(final File sourceDirectory, final String[] relativeSourceFileNames, final String prefix, final Collection<String> entryNames) {
Collection<File> uncoveredFiles = new ArrayList<>();
for (String relativeSourceFileName : relativeSourceFileNames) {
- if (!entryNames.contains(JCR_ROOT + prefix + relativeSourceFileName)) {
+ if (!entryNames.contains(prefix + relativeSourceFileName)) {
uncoveredFiles.add(new File(sourceDirectory, relativeSourceFileName));
}
}
return uncoveredFiles;
}
- private MavenArchiveConfiguration getMavenArchiveConfiguration(File manifestFile) throws IOException {
+ private MavenArchiveConfiguration getMavenArchiveConfiguration(File manifestFile) {
if (archive == null) {
archive = new MavenArchiveConfiguration();
Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/DefaultProjectIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/DefaultProjectIT.java?rev=1847445&r1=1847444&r2=1847445&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/DefaultProjectIT.java (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/DefaultProjectIT.java Sun Nov 25 23:53:48 2018
@@ -98,5 +98,19 @@ public class DefaultProjectIT {
.verifyExpectedManifest();
}
+ @Test
+ public void overwritten_embed() throws Exception {
+ new ProjectBuilder()
+ .setTestProjectDir(TEST_PROJECT_NAME + "overwritten-embed")
+ .setBuildExpectedToFail(true)
+ .build();
+ }
+ @Test
+ public void overwritten_embed_not_failing() throws Exception {
+ new ProjectBuilder()
+ .setTestProjectDir(TEST_PROJECT_NAME + "overwritten-embed-not-failing")
+ .build()
+ .verifyExpectedFilesChecksum();
+ }
}
Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ProjectBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ProjectBuilder.java?rev=1847445&r1=1847444&r2=1847445&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ProjectBuilder.java (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ProjectBuilder.java Sun Nov 25 23:53:48 2018
@@ -57,6 +57,7 @@ import static org.junit.Assert.assertFal
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
/**
* Helper class to build and verify a maven project.
@@ -93,6 +94,8 @@ public class ProjectBuilder {
private File expectedManifestFile;
private File expectedFilterFile;
+
+ private File expectedFilesWithChecksumsFile;
private File logTxtFile;
@@ -152,6 +155,7 @@ public class ProjectBuilder {
this.expectedOrderFile = new File(testProjectDir, "expected-file-order.txt");
this.expectedManifestFile = new File(testProjectDir, "expected-manifest.txt");
this.expectedFilterFile = new File(testProjectDir, "expected-filter.xml");
+ this.expectedFilesWithChecksumsFile = new File(testProjectDir, "expected-files-with-checksums.txt");
this.logTxtFile = new File(testProjectDir, "log.txt");
return this;
}
@@ -290,6 +294,26 @@ public class ProjectBuilder {
return this;
}
+ public ProjectBuilder verifyExpectedFilesChecksum() throws IOException {
+ List<String> expectedEntriesWithChecksums = Files.readAllLines(expectedFilesWithChecksumsFile.toPath(), StandardCharsets.UTF_8);
+ for (String expectedEntryWithChecksum : expectedEntriesWithChecksums) {
+ // split name and checksum
+ String[] parts = expectedEntryWithChecksum.split(" ", 2);
+ final String name = parts[0];
+ // the second part must be a hexadecimal CRC32 checksum
+ final long expectedChecksum = Long.parseLong(parts[1], 16);
+ try (JarFile jar = new JarFile(testPackageFile)) {
+ JarEntry entry = jar.getJarEntry(name);
+ if (entry == null) {
+ fail("Could not find entry with name " + name + " in package " + testPackageFile);
+ }
+ long actualChecksum = entry.getCrc();
+ assertEquals("Checksum of entry with name " + name + " is not equal to the expected value", expectedChecksum, actualChecksum);
+ }
+ }
+ return this;
+ }
+
public ProjectBuilder verifyExpectedFilesOrder() throws IOException {
List<String> expectedEntriesInOrder= Files.readAllLines(expectedOrderFile.toPath(), StandardCharsets.UTF_8);
assertThat("Order of entries within package", pkgZipEntries, Matchers.containsInRelativeOrder(expectedEntriesInOrder.toArray()));
Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/generic-unusal-jcrroot/expected-files.txt
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/generic-unusal-jcrroot/expected-files.txt?rev=1847445&r1=1847444&r2=1847445&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/generic-unusal-jcrroot/expected-files.txt (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/generic-unusal-jcrroot/expected-files.txt Sun Nov 25 23:53:48 2018
@@ -24,9 +24,6 @@ jcr_root/etc/designs/some-thirdparty-lib
jcr_root/etc/cloudservices/
jcr_root/etc/cloudservices/ooyala/
jcr_root/etc/cloudservices/ooyala/.content.xml
-jcr_root/etc/cloudservices/.content.xml
-jcr_root/apps/wcm/.content.xml
-jcr_root/apps/wcm/core/.content.xml
META-INF/maven/
META-INF/maven/org.apache.jackrabbit.filevault/
META-INF/maven/org.apache.jackrabbit.filevault/package-plugin-test-pkg/
Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/generic-with-builtcd/expected-files.txt
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/generic-with-builtcd/expected-files.txt?rev=1847445&r1=1847444&r2=1847445&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/generic-with-builtcd/expected-files.txt (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/generic-with-builtcd/expected-files.txt Sun Nov 25 23:53:48 2018
@@ -24,9 +24,6 @@ jcr_root/etc/designs/some-thirdparty-lib
jcr_root/etc/cloudservices/
jcr_root/etc/cloudservices/ooyala/
jcr_root/etc/cloudservices/ooyala/.content.xml
-jcr_root/etc/cloudservices/.content.xml
-jcr_root/apps/wcm/.content.xml
-jcr_root/apps/wcm/core/.content.xml
META-INF/maven/
META-INF/maven/org.apache.jackrabbit.filevault/
META-INF/maven/org.apache.jackrabbit.filevault/package-plugin-test-pkg/
Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/generic/expected-files.txt
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/generic/expected-files.txt?rev=1847445&r1=1847444&r2=1847445&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/generic/expected-files.txt (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/generic/expected-files.txt Sun Nov 25 23:53:48 2018
@@ -19,15 +19,12 @@ jcr_root/apps/
jcr_root/apps/install/
jcr_root/apps/install/org.apache.jackrabbit.vault-3.1.40.jar
jcr_root/apps/wcm/
-jcr_root/apps/wcm/.content.xml
jcr_root/apps/wcm/core/
-jcr_root/apps/wcm/core/.content.xml
jcr_root/apps/wcm/core/content/
jcr_root/apps/wcm/core/content/.content.xml
jcr_root/apps/wcm/core/content/siteadmin.xml
jcr_root/etc/
jcr_root/etc/cloudservices/
-jcr_root/etc/cloudservices/.content.xml
jcr_root/etc/cloudservices/ooyala/
jcr_root/etc/cloudservices/ooyala/.content.xml
jcr_root/etc/designs/
Added: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed-not-failing/expected-files-with-checksums.txt
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed-not-failing/expected-files-with-checksums.txt?rev=1847445&view=auto
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed-not-failing/expected-files-with-checksums.txt (added)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed-not-failing/expected-files-with-checksums.txt Sun Nov 25 23:53:48 2018
@@ -0,0 +1 @@
+jcr_root/apps/install/jcr-2.0.jar ec7a5d12
\ No newline at end of file
Added: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed-not-failing/jcr_root/apps/install/.content.xml
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed-not-failing/jcr_root/apps/install/.content.xml?rev=1847445&view=auto
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed-not-failing/jcr_root/apps/install/.content.xml (added)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed-not-failing/jcr_root/apps/install/.content.xml Sun Nov 25 23:53:48 2018
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+ -->
+
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+ jcr:primaryType="sling:Folder"/>
Added: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed-not-failing/jcr_root/apps/install/jcr-2.0.jar
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed-not-failing/jcr_root/apps/install/jcr-2.0.jar?rev=1847445&view=auto
==============================================================================
(empty)
Added: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed-not-failing/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed-not-failing/pom.xml?rev=1847445&view=auto
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed-not-failing/pom.xml (added)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed-not-failing/pom.xml Sun Nov 25 23:53:48 2018
@@ -0,0 +1,72 @@
+<!--
+ 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.
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <!-- ====================================================================== -->
+ <!-- P R O J E C T D E S C R I P T I O N -->
+ <!-- ====================================================================== -->
+ <groupId>org.apache.jackrabbit.filevault</groupId>
+ <artifactId>package-plugin-test-pkg</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>content-package</packaging>
+ <name>Packaging test</name>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>filevault-package-maven-plugin</artifactId>
+ <version>${plugin.version}</version>
+ <extensions>true</extensions>
+ <configuration>
+ <filters>
+ <filter>
+ <root>/apps/install</root>
+ </filter>
+ </filters>
+ <embeddeds>
+ <embedded>
+ <groupId>javax.jcr</groupId>
+ <artifactId>jcr</artifactId>
+ </embedded>
+ <embedded>
+ <groupId>org.apache.jackrabbit.vault</groupId>
+ <artifactId>org.apache.jackrabbit.vault</artifactId>
+ </embedded>
+ </embeddeds>
+ <embeddedTarget>/apps/install</embeddedTarget>
+ <failOnDuplicateEntries>false</failOnDuplicateEntries>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>javax.jcr</groupId>
+ <artifactId>jcr</artifactId>
+ <version>2.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit.vault</groupId>
+ <artifactId>org.apache.jackrabbit.vault</artifactId>
+ <version>3.1.40</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+</project>
Added: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed/jcr_root/apps/install/.content.xml
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed/jcr_root/apps/install/.content.xml?rev=1847445&view=auto
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed/jcr_root/apps/install/.content.xml (added)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed/jcr_root/apps/install/.content.xml Sun Nov 25 23:53:48 2018
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+ -->
+
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+ jcr:primaryType="sling:Folder"/>
Added: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed/jcr_root/apps/install/jcr-2.0.jar
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed/jcr_root/apps/install/jcr-2.0.jar?rev=1847445&view=auto
==============================================================================
(empty)
Added: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed/pom.xml?rev=1847445&view=auto
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed/pom.xml (added)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/overwritten-embed/pom.xml Sun Nov 25 23:53:48 2018
@@ -0,0 +1,71 @@
+<!--
+ 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.
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <!-- ====================================================================== -->
+ <!-- P R O J E C T D E S C R I P T I O N -->
+ <!-- ====================================================================== -->
+ <groupId>org.apache.jackrabbit.filevault</groupId>
+ <artifactId>package-plugin-test-pkg</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>content-package</packaging>
+ <name>Packaging test</name>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>filevault-package-maven-plugin</artifactId>
+ <version>${plugin.version}</version>
+ <extensions>true</extensions>
+ <configuration>
+ <filters>
+ <filter>
+ <root>/apps/install</root>
+ </filter>
+ </filters>
+ <embeddeds>
+ <embedded>
+ <groupId>javax.jcr</groupId>
+ <artifactId>jcr</artifactId>
+ </embedded>
+ <embedded>
+ <groupId>org.apache.jackrabbit.vault</groupId>
+ <artifactId>org.apache.jackrabbit.vault</artifactId>
+ </embedded>
+ </embeddeds>
+ <embeddedTarget>/apps/install</embeddedTarget>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>javax.jcr</groupId>
+ <artifactId>jcr</artifactId>
+ <version>2.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit.vault</groupId>
+ <artifactId>org.apache.jackrabbit.vault</artifactId>
+ <version>3.1.40</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+</project>
Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/resource/expected-files.txt
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/resource/expected-files.txt?rev=1847445&r1=1847444&r2=1847445&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/resource/expected-files.txt (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/default-test-projects/resource/expected-files.txt Sun Nov 25 23:53:48 2018
@@ -24,9 +24,6 @@ jcr_root/etc/designs/some-thirdparty-lib
jcr_root/etc/cloudservices/
jcr_root/etc/cloudservices/ooyala/
jcr_root/etc/cloudservices/ooyala/.content.xml
-jcr_root/etc/cloudservices/.content.xml
-jcr_root/apps/wcm/.content.xml
-jcr_root/apps/wcm/core/.content.xml
META-INF/maven/
META-INF/maven/org.apache.jackrabbit.filevault/
META-INF/maven/org.apache.jackrabbit.filevault/package-plugin-test-pkg/