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/08 00:18:43 UTC

svn commit: r1846090 - in /jackrabbit/commons/filevault-package-maven-plugin/trunk/src: main/java/org/apache/jackrabbit/filevault/maven/packaging/ test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ test/resources/test-projects/filter-tests/f...

Author: tripod
Date: Thu Nov  8 00:18:43 2018
New Revision: 1846090

URL: http://svn.apache.org/viewvc?rev=1846090&view=rev
Log:
JCRVLT-321 Warn for files not being included in the package due to being outside of filter roots (closes #19)

Added:
    jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/
    jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/META-INF/
    jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/META-INF/vault/
    jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/META-INF/vault/filter.xml
    jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/jcr_root/
    jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/jcr_root/apps/
    jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/jcr_root/apps/.content.xml   (with props)
    jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/pom.xml
Modified:
    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/FilterIT.java

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=1846090&r1=1846089&r2=1846090&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 Thu Nov  8 00:18:43 2018
@@ -19,7 +19,9 @@ package org.apache.jackrabbit.filevault.
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
@@ -94,6 +96,17 @@ public class VaultMojo extends AbstractP
                     "${project.build.outputDirectory}"
     )
     private File[] jcrRootSourceDirectory;
+    
+    /**
+     * Set to {@code true} to fail the build in case of files are being contained in the {@code jcrRootSourceDirectory} 
+     * which are not covered by the filter rules and therefore would not end up in the package.
+     */
+    @Parameter(
+            property = "vault.failOnUncoveredSourceFiles",
+            required = true,
+            defaultValue = "false"
+    )
+    private boolean failOnUncoveredSourceFiles;
 
     /**
      * The name of the generated package ZIP file without the ".zip" file
@@ -243,6 +256,16 @@ public class VaultMojo extends AbstractP
                         }
                     }
                 }
+                
+                Collection<File> uncoveredFiles = getUncoveredFiles(jcrSourceDirectory, prefix, contentPackageArchiver.getFiles().keySet());
+                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");
+                    }
+                    if (failOnUncoveredSourceFiles) {
+                        throw new MojoFailureException("The following files are not covered by a filter rule: \n" + StringUtils.join(uncoveredFiles.iterator(), ",\n"));
+                    }
+                }
             }
 
             for (Map.Entry<String, File> entry : embeddedFiles.entrySet()) {
@@ -289,6 +312,28 @@ public class VaultMojo extends AbstractP
         }
     }
 
+    private Collection<File> getUncoveredFiles(final File sourceDirectory, final String prefix, final Collection<String> entryNames) throws IOException {
+        /*
+         *  similar method as in {@link org.codehaus.plexus.components.io.resources.PlexusIoFileResourceCollection#getResources();}
+         */
+        DirectoryScanner scanner = new DirectoryScanner();
+        scanner.setBasedir(sourceDirectory);
+        scanner.setExcludes(excludes);
+        scanner.addDefaultExcludes();
+        scanner.scan();
+        return getUncoveredFiles(sourceDirectory, scanner.getIncludedFiles(), prefix, entryNames);
+    }
+
+    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)) {
+                uncoveredFiles.add(new File(sourceDirectory, relativeSourceFileName));
+            }
+        }
+        return uncoveredFiles;
+    }
+    
     private MavenArchiveConfiguration getMavenArchiveConfiguration(File manifestFile) throws IOException {
         if (archive == null) {
             archive = new MavenArchiveConfiguration();

Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/FilterIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/FilterIT.java?rev=1846090&r1=1846089&r2=1846090&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/FilterIT.java (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/FilterIT.java Thu Nov  8 00:18:43 2018
@@ -157,4 +157,9 @@ public class FilterIT {
 
         assertTrue("Marker file still exists.", marker.exists());
     }
+    
+    @Test 
+    public void test_filter_not_covering_all_files() throws Exception {
+        verify("filter-not-covering-all-files", true);
+    }
 }

Added: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/META-INF/vault/filter.xml
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/META-INF/vault/filter.xml?rev=1846090&view=auto
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/META-INF/vault/filter.xml (added)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/META-INF/vault/filter.xml Thu Nov  8 00:18:43 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.
+  -->
+<workspaceFilter version="1.0">
+    <filter root="/apps2/test2"/>
+</workspaceFilter>

Added: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/jcr_root/apps/.content.xml
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/jcr_root/apps/.content.xml?rev=1846090&view=auto
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/jcr_root/apps/.content.xml (added)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/jcr_root/apps/.content.xml Thu Nov  8 00:18:43 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"/>

Propchange: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/jcr_root/apps/.content.xml
------------------------------------------------------------------------------
    svn:executable = *

Added: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/pom.xml?rev=1846090&view=auto
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/pom.xml (added)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/pom.xml Thu Nov  8 00:18:43 2018
@@ -0,0 +1,53 @@
+<!--
+  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>
+
+    <description>Test project that defines an explicit filter in META-INF/vault/filter.xml</description>
+    <build>
+        <resources>
+            <resource>
+                <directory>${basedir}/META-INF</directory>
+                <targetPath>${project.build.directory}/vault-work/META-INF</targetPath>
+            </resource>
+            <resource>
+                <directory>${basedir}/jcr_root</directory>
+                <targetPath>.</targetPath>
+            </resource>
+        </resources>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.jackrabbit</groupId>
+                <artifactId>filevault-package-maven-plugin</artifactId>
+                <version>${plugin.version}</version>
+                <extensions>true</extensions>
+                <configuration>
+                    <filterSource>filter.xml</filterSource>
+                    <failOnUncoveredSourceFiles>true</failOnUncoveredSourceFiles>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>