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/07/13 08:50:06 UTC

[jackrabbit-filevault] branch feature/provide-xsd created (now 787144c0)

This is an automated email from the ASF dual-hosted git repository.

kwin pushed a change to branch feature/provide-xsd
in repository https://gitbox.apache.org/repos/asf/jackrabbit-filevault.git


      at 787144c0 JCRVLT-643 expose XML Schema definition for workspace filter XMLs

This branch includes the following new commits:

     new 787144c0 JCRVLT-643 expose XML Schema definition for workspace filter XMLs

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[jackrabbit-filevault] 01/01: JCRVLT-643 expose XML Schema definition for workspace filter XMLs

Posted by kw...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kwin pushed a commit to branch feature/provide-xsd
in repository https://gitbox.apache.org/repos/asf/jackrabbit-filevault.git

commit 787144c0fd16086c2509cf94a5cbb42daacfb5dc
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Wed Jul 13 10:50:01 2022 +0200

    JCRVLT-643 expose XML Schema definition for workspace filter XMLs
    
    allow new modes "merge_properties" and "update_properties"
    reference XSD from example filter.xml
---
 pom.xml                                            | 25 +++++++++++++++++++---
 src/site/markdown/config.md                        |  2 +-
 src/site/markdown/filter.md                        |  8 ++++---
 src/site/markdown/importmode.md                    |  2 +-
 .../spi/impl/AdvancedFilterValidatorFactory.java   |  4 ++--
 .../{filter.xsd => workspacefilter-1.0.xsd}        |  2 ++
 6 files changed, 33 insertions(+), 10 deletions(-)

diff --git a/pom.xml b/pom.xml
index a774a80c..68d89223 100644
--- a/pom.xml
+++ b/pom.xml
@@ -134,11 +134,30 @@
                         <goals>
                             <goal>resources</goal>
                         </goals>
+                        <configuration>
+                            <outputDirectory>${project.build.directory}/site</outputDirectory>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>copy-xsds</id>
+                        <phase>pre-site</phase>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals>
+                        <configuration>
+                            <resources>
+                                <resource>
+                                    <directory>vault-validation/src/main/resources</directory>
+                                    <includes>
+                                        <include>*.xsd</include>
+                                    </includes>
+                                </resource>
+                            </resources>
+                            <outputDirectory>${project.build.directory}/site/xsd</outputDirectory>
+                        </configuration>
                     </execution>
                 </executions>
-                <configuration>
-                    <outputDirectory>${project.build.directory}/site</outputDirectory>
-                </configuration>
+                
             </plugin>
         </plugins>
         
diff --git a/src/site/markdown/config.md b/src/site/markdown/config.md
index 3245e4eb..7cfecc0e 100644
--- a/src/site/markdown/config.md
+++ b/src/site/markdown/config.md
@@ -30,7 +30,7 @@ The following system properties or OSGi Framework properties can be used
 
 Property Name | Type | Default Value | Description | Related JIRA Ticket | Supported since
 --- | --- | --- | --- | --- | ---
-`vault.useNioArchive` | `Boolean` | `false` | If set to `true `uses an [Archive implementation](https://github.com/apache/jackrabbit-filevault/blob/master/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/ZipNioArchive.java) based on the [Java NIO Zip File System Provider](https://docs.oracle.com/javase/8/docs/technotes/guides/io/fsp/zipfilesystemprovider.html) instead of the [default implementation](https://github.com/apache/jackrabbit-filevault/blob/master/vault-core/src/main/ [...]
+`vault.useNioArchive` | `Boolean` | `false` | If set to `true ` uses an [Archive implementation](https://github.com/apache/jackrabbit-filevault/blob/master/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/ZipNioArchive.java) based on the [Java NIO Zip File System Provider](https://docs.oracle.com/javase/8/docs/technotes/guides/io/fsp/zipfilesystemprovider.html) instead of the [default implementation](https://github.com/apache/jackrabbit-filevault/blob/master/vault-core/src/main [...]
 `vault.enableStackTraces` | `Boolean` | `false` | If set to `true` persists a stack trace for every opened Archive and logs it in case it was not properly closed. Should only be enabled on non-production environments as this has a negative performance impact. | [JCRVLT-591](https://issues.apache.org/jira/browse/JCRVLT-591) | 3.5.10
 
 
diff --git a/src/site/markdown/filter.md b/src/site/markdown/filter.md
index 45adab5a..40120e3b 100644
--- a/src/site/markdown/filter.md
+++ b/src/site/markdown/filter.md
@@ -31,7 +31,7 @@ The `filter.xml` consists of a set of `filter` elements, each with a mandatory `
 
 Example:
 
-    <workspaceFilter version="1.0">
+    <workspaceFilter xmlns="http://jackrabbit.apache.org/filevault/workspacefilter/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jackrabbit.apache.org/filevault/workspacefilter/1.0 https://jackrabbit.apache.org/filevault/xsd/workspacefilter-1.0.xsd" version="1.0">
         <filter root="/apps/project1" />
         <filter root="/etc/project1">
             <exclude pattern=".*\.gif" />
@@ -48,8 +48,10 @@ The filter element can have an optional `mode` attribute which specified the [im
 importing content. the following values are possible:
 
 1. `replace` : This is the normal behavior. Existing content is replaced completely by the imported content, i.e. is overridden or deleted accordingly.
-1. `merge` : Existing content is not modified, i.e. only new content is added and none is deleted or modified.
-1. `update` : Existing content is updated, new content is added and none is deleted.
+1. `merge` : Existing content is not modified, i.e. only new content is added and none is deleted or modified. Deprecated, as not handled consistently, use `merge_properties` instead.
+1. `merge_properties`: Existing content is not modified, i.e. only new content is added and none is deleted or modified. 
+1. `update` : Existing content is updated, new content is added and none is deleted. Deprecated, as not handled consistently, use `update_properties` instead.
+1. `update_properties`: Existing content is updated, new content is added and none is deleted.
 
 For a more detailed description of the import mode, see [here](importmode.html).
 
diff --git a/src/site/markdown/importmode.md b/src/site/markdown/importmode.md
index 13f92610..1f12c185 100644
--- a/src/site/markdown/importmode.md
+++ b/src/site/markdown/importmode.md
@@ -49,7 +49,7 @@ If an authorizable with the same name already exists, the active `ImportMode` co
 : Replaces the authorizable node completely with the content in the package **in place**. The importer effectively deletes and re-creates the authorizable at the path specified in the package (internally the content is imported using the content handler with `IMPORT_UUID_COLLISION_REPLACE_EXISTING`). Note that any sub-nodes of the authorizable are treated like normal content and obey the normal filter rules. However, if the authorizable existed at a different path as specified in the rep [...]
 
 
-**`ImportMode.MERGE`,`ImportMode.UPDATE_PROPERTIES`**
+**`ImportMode.MERGE`,`ImportMode.MERGE_PROPERTIES`**
 : Has no effect if the authorizable already existed except for group memberships (see below). Note that any sub-nodes of the authorizable are treated like normal content and obey the normal filter rules. However, if the authorizable existed at a different path as specified in the repository, the importer keeps track of the remapping and calculates the filters accordingly.
 
 ### Merging Group Members
diff --git a/vault-validation/src/main/java/org/apache/jackrabbit/vault/validation/spi/impl/AdvancedFilterValidatorFactory.java b/vault-validation/src/main/java/org/apache/jackrabbit/vault/validation/spi/impl/AdvancedFilterValidatorFactory.java
index 39752311..789e02e7 100644
--- a/vault-validation/src/main/java/org/apache/jackrabbit/vault/validation/spi/impl/AdvancedFilterValidatorFactory.java
+++ b/vault-validation/src/main/java/org/apache/jackrabbit/vault/validation/spi/impl/AdvancedFilterValidatorFactory.java
@@ -75,14 +75,14 @@ public final class AdvancedFilterValidatorFactory implements ValidatorFactory {
     static @NotNull DocumentBuilderFactory createFilterXsdAwareDocumentBuilder(Locale locale) throws IOException {
         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
         factory.setNamespaceAware(true);
-        try (InputStream xsdInput = AdvancedFilterValidatorFactory.class.getResourceAsStream("/filter.xsd")) {
+        try (InputStream xsdInput = AdvancedFilterValidatorFactory.class.getResourceAsStream("/workspacefilter-1.0.xsd")) {
             SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
             // load a WXS schema, represented by a Schema instance
             Source schemaFile = new StreamSource(xsdInput);
             Schema schema = schemaFactory.newSchema(schemaFile);
             factory.setSchema(schema);
             if (xsdInput == null) {
-                throw new IllegalStateException("Can not load filter.xsd");
+                throw new IllegalStateException("Can not load workspacefilter-1.0.xsd");
             }
             factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
             factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "");
diff --git a/vault-validation/src/main/resources/filter.xsd b/vault-validation/src/main/resources/workspacefilter-1.0.xsd
similarity index 95%
rename from vault-validation/src/main/resources/filter.xsd
rename to vault-validation/src/main/resources/workspacefilter-1.0.xsd
index 12d91ca6..82a68da0 100644
--- a/vault-validation/src/main/resources/filter.xsd
+++ b/vault-validation/src/main/resources/workspacefilter-1.0.xsd
@@ -32,7 +32,9 @@
         <xs:restriction base="xs:string">
           <xs:enumeration value="replace"/>
           <xs:enumeration value="merge"/>
+          <xs:enumeration value="merge_properties"/>
           <xs:enumeration value="update"/>
+          <xs:enumeration value="update_properties"/>
         </xs:restriction>
     </xs:simpleType>
   <xs:element name="workspaceFilter">