Author: tmaret
Date: Mon Aug 22 15:06:44 2016
New Revision: 1757192
URL: http://svn.apache.org/viewvc?rev=1757192&view=rev
Log:
SLING-5906 - Allow to filter resource by properties
* Update org.apache.jackrabbit.vault dependency in order to include JCRVLT-120
* Allow to configure a Package Property Filter, pass the configured filters to
the vlt WorkspaceFilter
Modified:
sling/trunk/contrib/extensions/distribution/core/pom.xml
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultContentSerializer.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VaultDistributionPackageBuilderFactory.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VltUtils.java
sling/trunk/contrib/extensions/distribution/it/pom.xml
Modified: sling/trunk/contrib/extensions/distribution/core/pom.xml
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/pom.xml?rev=1757192&r1=1757191&r2=1757192&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/pom.xml (original)
+++ sling/trunk/contrib/extensions/distribution/core/pom.xml Mon Aug 22
15:06:44 2016
@@ -211,7 +211,7 @@
<dependency>
<groupId>org.apache.jackrabbit.vault</groupId>
<artifactId>org.apache.jackrabbit.vault</artifactId>
- <version>3.1.24</version>
+ <version>3.1.28</version>
</dependency>
<!-- HTTP -->
<dependency>
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultContentSerializer.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultContentSerializer.java?rev=1757192&r1=1757191&r2=1757192&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultContentSerializer.java
(original)
+++
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/FileVaultContentSerializer.java
Mon Aug 22 15:06:44 2016
@@ -64,19 +64,21 @@ public class FileVaultContentSerializer
private final AccessControlHandling aclHandling;
private final String[] packageRoots;
private final int autosaveThreshold;
- private final TreeMap<String, List<String>> filters;
+ private final TreeMap<String, List<String>> nodeFilters;
+ private final TreeMap<String, List<String>> propertyFilters;
private final boolean useBinaryReferences;
private final String name;
public FileVaultContentSerializer(String name, Packaging packaging,
ImportMode importMode, AccessControlHandling aclHandling, String[] packageRoots,
- String[] filters, boolean
useBinaryReferences, int autosaveThreshold) {
+ String[] nodeFilters, String[]
propertyFilters, boolean useBinaryReferences, int autosaveThreshold) {
this.name = name;
this.packaging = packaging;
this.importMode = importMode;
this.aclHandling = aclHandling;
this.packageRoots = packageRoots;
this.autosaveThreshold = autosaveThreshold;
- this.filters = VltUtils.parseFilters(filters);
+ this.nodeFilters = VltUtils.parseFilters(nodeFilters);
+ this.propertyFilters = VltUtils.parseFilters(propertyFilters);
this.useBinaryReferences = useBinaryReferences;
}
@@ -88,7 +90,7 @@ public class FileVaultContentSerializer
String packageGroup = PACKAGE_GROUP;
String packageName = TYPE + "_" + System.currentTimeMillis() + "_"
+ UUID.randomUUID();
- WorkspaceFilter filter = VltUtils.createFilter(request, filters);
+ WorkspaceFilter filter = VltUtils.createFilter(request,
nodeFilters, propertyFilters);
ExportOptions opts = VltUtils.getExportOptions(filter,
packageRoots, packageGroup, packageName, VERSION, useBinaryReferences);
log.debug("assembling package {} user {}", packageGroup + '/' +
packageName + "-" + VERSION, resourceResolver.getUserID());
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VaultDistributionPackageBuilderFactory.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VaultDistributionPackageBuilderFactory.java?rev=1757192&r1=1757191&r2=1757192&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VaultDistributionPackageBuilderFactory.java
(original)
+++
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VaultDistributionPackageBuilderFactory.java
Mon Aug 22 15:06:44 2016
@@ -28,6 +28,7 @@ import org.apache.felix.scr.annotations.
import org.apache.felix.scr.annotations.ConfigurationPolicy;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.PropertyOption;
+import org.apache.felix.scr.annotations.PropertyUnbounded;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
import org.apache.jackrabbit.vault.fs.api.ImportMode;
@@ -101,11 +102,17 @@ public class VaultDistributionPackageBui
private static final String PACKAGE_ROOTS = "package.roots";
/**
- * Package filters
+ * Package node filters
*/
- @Property(label = "Package Filters", description = "The package path
filters. Filter format: path|+include|-exclude", cardinality = 100)
+ @Property(label = "Package Node Filters", description = "The package node
path filters. Filter format: path|+include|-exclude", cardinality = 100)
private static final String PACKAGE_FILTERS = "package.filters";
+ /**
+ * Package property filters
+ */
+ @Property(label = "Package Property Filters", description = "The package
property path filters. Filter format: path|+include|-exclude",
+ unbounded = PropertyUnbounded.ARRAY, value = {})
+ private static final String PROPERTY_FILTERS = "property.filters";
/**
* Temp file folder
@@ -186,7 +193,8 @@ public class VaultDistributionPackageBui
String aclHandlingString =
SettingsUtils.removeEmptyEntry(PropertiesUtil.toString(config.get(ACL_HANDLING),
null));
String[] packageRoots =
SettingsUtils.removeEmptyEntries(PropertiesUtil.toStringArray(config.get(PACKAGE_ROOTS),
null));
- String[] packageFilters =
SettingsUtils.removeEmptyEntries(PropertiesUtil.toStringArray(config.get(PACKAGE_FILTERS),
null));
+ String[] packageNodeFilters =
SettingsUtils.removeEmptyEntries(PropertiesUtil.toStringArray(config.get(PACKAGE_FILTERS),
null));
+ String[] packagePropertyFilters =
SettingsUtils.removeEmptyEntries(PropertiesUtil.toStringArray(config.get(PROPERTY_FILTERS),
null));
String tempFsFolder =
SettingsUtils.removeEmptyEntry(PropertiesUtil.toString(config.get(TEMP_FS_FOLDER),
null));
boolean useBinaryReferences =
PropertiesUtil.toBoolean(config.get(USE_BINARY_REFERENCES), false);
@@ -208,7 +216,7 @@ public class VaultDistributionPackageBui
}
DistributionContentSerializer contentSerializer = new
FileVaultContentSerializer(name, packaging, importMode, aclHandling,
- packageRoots, packageFilters, useBinaryReferences,
autosaveThreshold);
+ packageRoots, packageNodeFilters, packagePropertyFilters,
useBinaryReferences, autosaveThreshold);
if ("filevlt".equals(type)) {
packageBuilder = new FileDistributionPackageBuilder(name,
contentSerializer, tempFsFolder, digestAlgorithm);
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VltUtils.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VltUtils.java?rev=1757192&r1=1757191&r2=1757192&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VltUtils.java
(original)
+++
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VltUtils.java
Mon Aug 22 15:06:44 2016
@@ -66,13 +66,25 @@ public class VltUtils {
private final static Logger log = LoggerFactory.getLogger(VltUtils.class);
- public static WorkspaceFilter createFilter(DistributionRequest
distributionRequest, NavigableMap<String, List<String>> filters) {
+ public static WorkspaceFilter createFilter(DistributionRequest
distributionRequest, NavigableMap<String, List<String>> nodeFilters,
+ NavigableMap<String,
List<String>> propertyFilters) {
DefaultWorkspaceFilter filter = new DefaultWorkspaceFilter();
for (String path : distributionRequest.getPaths()) {
- PathFilterSet filterSet = createFilterSet(path, filters,
distributionRequest);
- filter.add(filterSet);
+ // Set node path filters
+ Set<String> patterns = new HashSet<String>();
+
patterns.addAll(Arrays.asList(distributionRequest.getFilters(path)));
+ PathFilterSet nodeFilterSet = createFilterSet(path, nodeFilters,
patterns);
+ boolean deep = distributionRequest.isDeep(path);
+ if (!deep) {
+ nodeFilterSet.addInclude(new DefaultPathFilter(path));
+ }
+ filter.add(nodeFilterSet);
+
+ // Set property path filters
+ PathFilterSet propertyFilterSet = createFilterSet(path,
propertyFilters, new HashSet<String>());
+ filter.addPropertyFilterSet(propertyFilterSet);
}
return filter;
@@ -96,15 +108,9 @@ public class VltUtils {
return paths;
}
- private static PathFilterSet createFilterSet(String path,
NavigableMap<String, List<String>> globalFilters, DistributionRequest
distributionRequest) {
- boolean deep = distributionRequest.isDeep(path);
- PathFilterSet filterSet = new PathFilterSet(path);
+ private static PathFilterSet createFilterSet(String path,
NavigableMap<String, List<String>> globalFilters, Set<String> patterns) {
- if (!deep) {
- filterSet.addInclude(new DefaultPathFilter(path));
- }
-
- List<String> patterns = new ArrayList<String>();
+ PathFilterSet filterSet = new PathFilterSet(path);
// add the most specific filter rules
for (String key : globalFilters.descendingKeySet()) {
@@ -114,8 +120,6 @@ public class VltUtils {
}
}
- patterns.addAll(Arrays.asList(distributionRequest.getFilters(path)));
-
for (String pattern : patterns) {
PathFilterSet.Entry<DefaultPathFilter> entry =
extractPathPattern(pattern);
Modified: sling/trunk/contrib/extensions/distribution/it/pom.xml
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/it/pom.xml?rev=1757192&r1=1757191&r2=1757192&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/it/pom.xml (original)
+++ sling/trunk/contrib/extensions/distribution/it/pom.xml Mon Aug 22 15:06:44
2016
@@ -363,7 +363,7 @@
<dependency>
<groupId>org.apache.jackrabbit.vault</groupId>
<artifactId>org.apache.jackrabbit.vault</artifactId>
- <version>3.1.24</version>
+ <version>3.1.28</version>
<scope>provided</scope>
</dependency>
<!-- HTTP -->