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 2017/10/20 02:00:04 UTC
svn commit: r1812696 - in
/jackrabbit/commons/filevault-package-maven-plugin/trunk:
it/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/
it/src/test/resources/test-projects/filter-tests/inline-and-implicit-fails/
it/src/test/resources/test...
Author: tripod
Date: Fri Oct 20 02:00:03 2017
New Revision: 1812696
URL: http://svn.apache.org/viewvc?rev=1812696&view=rev
Log:
JCRVLT-209 Always write to the filter.xml inside the vaultDir but never to filter-plugin-generated.xml
- this closes #3
Added:
jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-and-implicit-fails/
jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-and-implicit-fails/META-INF/
jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-and-implicit-fails/META-INF/vault/
jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-and-implicit-fails/META-INF/vault/filter.xml
- copied, changed from r1812695, jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-filter-wins/META-INF/vault/filter.xml
jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-and-implicit-fails/expected-filter.xml
- copied, changed from r1812695, jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-filter-wins/expected-filter.xml
jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-and-implicit-fails/pom.xml
- copied, changed from r1812695, jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-filter-wins/pom.xml
jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/retain-filter-source/
jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/retain-filter-source/expected-filter.xml
- copied, changed from r1812695, jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-filter-wins/META-INF/vault/filter.xml
jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/retain-filter-source/filter.xml
- copied, changed from r1812695, jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-filter-wins/META-INF/vault/filter.xml
jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/retain-filter-source/pom.xml
- copied, changed from r1812695, jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-filter-wins/pom.xml
Removed:
jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-filter-wins/META-INF/vault/filter.xml
jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-filter-wins/expected-filter.xml
jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-filter-wins/pom.xml
Modified:
jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/FilterTest.java
jackrabbit/commons/filevault-package-maven-plugin/trunk/plugin/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java
jackrabbit/commons/filevault-package-maven-plugin/trunk/plugin/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/impl/DefaultWorkspaceFilter.java
Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/FilterTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/FilterTest.java?rev=1812696&r1=1812695&r2=1812696&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/FilterTest.java (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/FilterTest.java Fri Oct 20 02:00:03 2017
@@ -118,6 +118,14 @@ public class FilterTest {
}
/**
+ * Tests if a project with an filter source and no inline filters keeps the filter comments.
+ */
+ @Test
+ public void test_retain_filter_source() throws Exception {
+ verify("retain-filter-source", false);
+ }
+
+ /**
* Tests if a project with no filter but a prefix creates the default root
*/
@Test
@@ -129,16 +137,14 @@ public class FilterTest {
* Tests if a project with an inline filter and an implicit filter correctly uses the inline filters.
*/
@Test
- @Ignore("JCRVLT-209")
- public void test_inline_filter_wins() throws Exception {
- verify("inline-filter-wins", false);
+ public void test_inline_and_implicit_filter_fails() throws Exception {
+ verify("inline-and-implicit-fails", true);
}
/**
* Tests if a project with an inline filter executed twice works w/o clean
*/
@Test
- @Ignore("JCRVLT-209")
public void test_inline_filter_twice() throws Exception {
// first execute with default goals
final File projectDir = new File("target/test-classes/test-projects/filter-tests/inline-filter-twice");
Copied: jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-and-implicit-fails/META-INF/vault/filter.xml (from r1812695, jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-filter-wins/META-INF/vault/filter.xml)
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-and-implicit-fails/META-INF/vault/filter.xml?p2=jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-and-implicit-fails/META-INF/vault/filter.xml&p1=jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-filter-wins/META-INF/vault/filter.xml&r1=1812695&r2=1812696&rev=1812696&view=diff
==============================================================================
(empty)
Copied: jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-and-implicit-fails/expected-filter.xml (from r1812695, jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-filter-wins/expected-filter.xml)
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-and-implicit-fails/expected-filter.xml?p2=jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-and-implicit-fails/expected-filter.xml&p1=jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-filter-wins/expected-filter.xml&r1=1812695&r2=1812696&rev=1812696&view=diff
==============================================================================
(empty)
Copied: jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-and-implicit-fails/pom.xml (from r1812695, jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-filter-wins/pom.xml)
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-and-implicit-fails/pom.xml?p2=jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-and-implicit-fails/pom.xml&p1=jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-filter-wins/pom.xml&r1=1812695&r2=1812696&rev=1812696&view=diff
==============================================================================
(empty)
Copied: jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/retain-filter-source/expected-filter.xml (from r1812695, jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-filter-wins/META-INF/vault/filter.xml)
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/retain-filter-source/expected-filter.xml?p2=jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/retain-filter-source/expected-filter.xml&p1=jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-filter-wins/META-INF/vault/filter.xml&r1=1812695&r2=1812696&rev=1812696&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-filter-wins/META-INF/vault/filter.xml (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/retain-filter-source/expected-filter.xml Fri Oct 20 02:00:03 2017
@@ -16,5 +16,6 @@
limitations under the License.
-->
<workspaceFilter version="1.0">
+ <!-- this is a comment -->
<filter root="/apps/test"/>
</workspaceFilter>
Copied: jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/retain-filter-source/filter.xml (from r1812695, jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-filter-wins/META-INF/vault/filter.xml)
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/retain-filter-source/filter.xml?p2=jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/retain-filter-source/filter.xml&p1=jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-filter-wins/META-INF/vault/filter.xml&r1=1812695&r2=1812696&rev=1812696&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-filter-wins/META-INF/vault/filter.xml (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/retain-filter-source/filter.xml Fri Oct 20 02:00:03 2017
@@ -16,5 +16,6 @@
limitations under the License.
-->
<workspaceFilter version="1.0">
+ <!-- this is a comment -->
<filter root="/apps/test"/>
</workspaceFilter>
Copied: jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/retain-filter-source/pom.xml (from r1812695, jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-filter-wins/pom.xml)
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/retain-filter-source/pom.xml?p2=jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/retain-filter-source/pom.xml&p1=jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-filter-wins/pom.xml&r1=1812695&r2=1812696&rev=1812696&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/inline-filter-wins/pom.xml (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/it/src/test/resources/test-projects/filter-tests/retain-filter-source/pom.xml Fri Oct 20 02:00:03 2017
@@ -14,8 +14,7 @@
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">
+<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>
<!-- ====================================================================== -->
@@ -26,18 +25,8 @@
<version>1.0.0-SNAPSHOT</version>
<packaging>content-package</packaging>
- <description>Test project that defines an implicit filter in META-INF/vault and inline filters.</description>
+ <description>Test project that defines a filter source.</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>
@@ -46,23 +35,7 @@
<extensions>true</extensions>
<configuration>
<failOnDependencyErrors>false</failOnDependencyErrors>
- <filters>
- <filter>
- <root>/libs/foo</root>
- <type>cleanup</type>
- </filter>
- <filter>
- <root>/libs/bar</root>
- <mode>merge</mode>
- <includes>
- <include>/libs/bar/a</include>
- <include>/libs/bar/b/.*</include>
- </includes>
- <excludes>
- <exclude>/libs/bar/foo(/.*)?</exclude>
- </excludes>
- </filter>
- </filters>
+ <filterSource>filter.xml</filterSource>
</configuration>
</plugin>
</plugins>
Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/plugin/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/plugin/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java?rev=1812696&r1=1812695&r2=1812696&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/plugin/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/plugin/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java Fri Oct 20 02:00:03 2017
@@ -21,6 +21,7 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.nio.file.Files;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Arrays;
@@ -408,52 +409,7 @@ public class VaultMojo extends AbstractE
Map<String, File> embeddedFiles = copyEmbeddeds();
embeddedFiles.putAll(copySubPackages());
- File filterFile = new File(vaultDir, "filter.xml");
-
- if (filterSource == null || !filterSource.exists()) {
- // ignore filtersource
- DefaultWorkspaceFilter oldFilter;
- if (filterFile.exists()) {
- oldFilter = new DefaultWorkspaceFilter();
- oldFilter.load(filterFile);
-
- // don't write filter if same
- if (filters.getSourceAsString().equals(oldFilter.getSourceAsString())) {
- filterFile = null;
- } else {
- if (filters.getFilterSets().isEmpty()) {
- filters.load(filterFile);
- filterFile = null;
- } else {
- filterFile = new File(vaultDir, "filter-plugin-generated.xml");
- }
- }
- } else {
- if (filters.getFilterSets().isEmpty() && prefix.length() > 0) {
- addWorkspaceFilter(prefix);
- }
- }
- } else {
- getLog().info("Merging " + filterSource.getPath() + " with inlined filter specifications.");
- DefaultWorkspaceFilter oldFilter = new DefaultWorkspaceFilter();
- oldFilter.load(filterSource);
- oldFilter.merge(filters);
- filters.getFilterSets().clear();
- filters.getFilterSets().addAll(oldFilter.getFilterSets());
- if (filters.getFilterSets().isEmpty() && prefix.length() > 0) {
- addWorkspaceFilter(prefix);
- }
- }
-
- if (filterFile != null) {
- FileUtils.fileWrite(filterFile.getAbsolutePath(), filters.getSourceAsString());
- }
- if (filters.getFilterSets().isEmpty() && failOnEmptyFilter) {
- final String msg = "No workspace filter defined (failOnEmptyFilter=true)";
- getLog().error(msg);
- throw new MojoExecutionException(msg);
- }
-
+ computePackageFilters(vaultDir);
validatePackageType();
computeImportPackage();
computeDependencies();
@@ -578,6 +534,97 @@ public class VaultMojo extends AbstractE
}
/**
+ * Computes the package filters.
+ *
+ * Requirements:
+ * - backward compatibility: if a filter.xml is copied to vault-work with the resource plugin, then it should still "work" correctly.
+ * - if there are any comments in the original filter source, they should not get lost, if possible
+ * - if there are filters specified in the pom and in a filter source, they should get merged.
+ * - if the prefix property is set, it should be used if no filter is set.
+ * - if both, a inline filter and a implicit filter is present, the build fails.
+ * - re-run the package goal w/o cleaning the target first must work
+ *
+ * @throws IOException if an I/O error occurs
+ * @throws MojoExecutionException if the build fails
+ */
+ private void computePackageFilters(File vaultMetaDir) throws IOException, MojoExecutionException {
+ // backward compatibility: if implicit filter exists, use it. but check for conflicts
+ File filterFile = new File(vaultMetaDir, "filter.xml");
+ if (filterFile.exists() && filterFile.lastModified() != 0) {
+ // if both, a inline filter and a implicit filter is present, the build fails.
+ if (!filters.getFilterSets().isEmpty()) {
+ getLog().error("Refuse to merge inline filters and non-sourced filter.xml. If this is intended, specify the filter.xml via the 'filterSource' property.");
+ throw new MojoExecutionException("conflicting filters.");
+ }
+ // load filters for further processing
+ filters.load(filterFile);
+
+ getLog().warn("The project is using a filter.xml provided via the resource plugin.");
+ getLog().warn("This is deprecated and might no longer be supported in future versions.");
+ getLog().warn("Use the 'filterSource' property to specify the filter or use inline filters.");
+ return;
+ }
+
+ // if last modified of vault-work/META-INF/vault/filter.xml == 0 -> delete it
+ if (filterFile.exists() && filterFile.lastModified() == 0) {
+ try {
+ Files.delete(filterFile.toPath());
+ } catch (IOException e) {
+ getLog().error("Unable to delete previously generated filter.xml. re-run the goals with a clean setup.");
+ throw new MojoExecutionException("Unable to delete file.", e);
+ }
+ }
+
+ // if filterSource exists, read the filters into sourceFilters
+ DefaultWorkspaceFilter sourceFilters = new DefaultWorkspaceFilter();
+ if (filterSource != null && filterSource.exists()) {
+ getLog().info("Loading filter from " + filterSource.getPath());
+ sourceFilters.load(filterSource);
+ if (!filters.getFilterSets().isEmpty()) {
+ getLog().info("Merging inline filters.");
+ sourceFilters.merge(filters);
+ }
+ filters.getFilterSets().clear();
+ filters.getFilterSets().addAll(sourceFilters.getFilterSets());
+
+ // reset source filters for later. this looks a bit complicated but is needed to keep the same
+ // filter order as in previous versions
+ sourceFilters = new DefaultWorkspaceFilter();
+ sourceFilters.load(filterSource);
+ sourceFilters.generateSource();
+ }
+
+ // if the prefix property is set, it should be used if no filter is set
+ if (filters.getFilterSets().isEmpty() && prefix.length() > 0) {
+ addWorkspaceFilter(prefix);
+ }
+
+ // if no filter is defined at all, fail
+ if (filters.getFilterSets().isEmpty()) {
+ if (failOnEmptyFilter) {
+ final String msg = "No workspace filter defined (failOnEmptyFilter=true)";
+ getLog().error(msg);
+ throw new MojoExecutionException(msg);
+ } else {
+ getLog().warn("No workspace filter defined. Package import might have unexpected results.");
+ }
+ }
+
+ // if the source filters and the generated filters are the same, copy the source file to retain the comments
+ if (filterSource != null && sourceFilters.getSourceAsString().equals(filters.getSourceAsString())) {
+ FileUtils.copyFile(filterSource, filterFile);
+ } else {
+ // generate xml and write to filter.xml
+ getLog().info("Generating filter.xml from plugin configuration");
+ FileUtils.fileWrite(filterFile.getAbsolutePath(), filters.getSourceAsString());
+ }
+
+ // update the last modified time of filter.xml to for generated filters
+ if (!filterFile.setLastModified(0)) {
+ getLog().warn("Unable to set last modified of filters file. make sure to clean the project before next run.");
+ }
+ }
+ /**
* Computes the dependency string.
*/
private void computeDependencies() throws IOException {
Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/plugin/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/impl/DefaultWorkspaceFilter.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/plugin/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/impl/DefaultWorkspaceFilter.java?rev=1812696&r1=1812695&r2=1812696&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/plugin/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/impl/DefaultWorkspaceFilter.java (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/plugin/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/impl/DefaultWorkspaceFilter.java Fri Oct 20 02:00:03 2017
@@ -254,7 +254,7 @@ public class DefaultWorkspaceFilter {
return new DefaultPathFilter(pattern);
}
- private void generateSource() {
+ public void generateSource() {
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();