diff --git a/src/it/no-config/application-package/pom.xml b/src/it/no-config/application-package/pom.xml
new file mode 100644
index 0000000..60723d7
--- /dev/null
+++ b/src/it/no-config/application-package/pom.xml
@@ -0,0 +1,24 @@
+
+
+ 4.0.0
+
+ application-package
+ content-package
+
+ biz.netcentric.filevault.validator.aem.namespace.it
+ no-config
+ 1.0.0-SNAPSHOT
+
+
+
+
+ org.apache.jackrabbit
+ filevault-package-maven-plugin
+
+ mixed
+ true
+
+
+
+
+
\ No newline at end of file
diff --git a/src/it/no-config/application-package/src/main/META-INF/vault/filter.xml b/src/it/no-config/application-package/src/main/META-INF/vault/filter.xml
new file mode 100644
index 0000000..b05d4c6
--- /dev/null
+++ b/src/it/no-config/application-package/src/main/META-INF/vault/filter.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/it/no-config/application-package/src/main/jcr_root/_oak_index/.content.xml b/src/it/no-config/application-package/src/main/jcr_root/_oak_index/.content.xml
new file mode 100644
index 0000000..86f43bb
--- /dev/null
+++ b/src/it/no-config/application-package/src/main/jcr_root/_oak_index/.content.xml
@@ -0,0 +1,4 @@
+
+
diff --git a/src/it/no-config/application-package/src/main/jcr_root/_oak_index/mytenant-custom-1/.content.xml b/src/it/no-config/application-package/src/main/jcr_root/_oak_index/mytenant-custom-1/.content.xml
new file mode 100644
index 0000000..175802a
--- /dev/null
+++ b/src/it/no-config/application-package/src/main/jcr_root/_oak_index/mytenant-custom-1/.content.xml
@@ -0,0 +1,11 @@
+
+
+
\ No newline at end of file
diff --git a/src/it/no-config/application-package/src/main/jcr_root/apps/mytenant/_sling_configs/.content.xml b/src/it/no-config/application-package/src/main/jcr_root/apps/mytenant/_sling_configs/.content.xml
new file mode 100644
index 0000000..491392d
--- /dev/null
+++ b/src/it/no-config/application-package/src/main/jcr_root/apps/mytenant/_sling_configs/.content.xml
@@ -0,0 +1,3 @@
+
+
diff --git a/src/it/no-config/application-package/src/main/jcr_root/apps/mytenant/_sling_configs/com.adobe.cq.wcm.core.components.internal.DataLayerConfig/.content.xml b/src/it/no-config/application-package/src/main/jcr_root/apps/mytenant/_sling_configs/com.adobe.cq.wcm.core.components.internal.DataLayerConfig/.content.xml
new file mode 100644
index 0000000..5b505bd
--- /dev/null
+++ b/src/it/no-config/application-package/src/main/jcr_root/apps/mytenant/_sling_configs/com.adobe.cq.wcm.core.components.internal.DataLayerConfig/.content.xml
@@ -0,0 +1,8 @@
+
+
+
+
diff --git a/src/it/no-config/application-package/src/main/jcr_root/apps/mytenant/clientlibrary1/.content.xml b/src/it/no-config/application-package/src/main/jcr_root/apps/mytenant/clientlibrary1/.content.xml
new file mode 100644
index 0000000..59ab8f2
--- /dev/null
+++ b/src/it/no-config/application-package/src/main/jcr_root/apps/mytenant/clientlibrary1/.content.xml
@@ -0,0 +1,4 @@
+
+
\ No newline at end of file
diff --git a/src/it/no-config/application-package/src/main/jcr_root/apps/mytenant/components/component1/.content.xml b/src/it/no-config/application-package/src/main/jcr_root/apps/mytenant/components/component1/.content.xml
new file mode 100644
index 0000000..f7475eb
--- /dev/null
+++ b/src/it/no-config/application-package/src/main/jcr_root/apps/mytenant/components/component1/.content.xml
@@ -0,0 +1,5 @@
+
+
\ No newline at end of file
diff --git a/src/it/no-config/application-package/src/main/jcr_root/apps/mytenant/test.txt b/src/it/no-config/application-package/src/main/jcr_root/apps/mytenant/test.txt
new file mode 100644
index 0000000..e69de29
diff --git a/src/it/no-config/container-package/pom.xml b/src/it/no-config/container-package/pom.xml
new file mode 100644
index 0000000..f5031a2
--- /dev/null
+++ b/src/it/no-config/container-package/pom.xml
@@ -0,0 +1,23 @@
+
+
+ 4.0.0
+
+ container-package
+ content-package
+
+ biz.netcentric.filevault.validator.aem.namespace.it
+ no-config
+ 1.0.0-SNAPSHOT
+
+
+
+
+ org.apache.jackrabbit
+ filevault-package-maven-plugin
+
+ container
+
+
+
+
+
\ No newline at end of file
diff --git a/src/it/no-config/container-package/src/main/META-INF/vault/filter.xml b/src/it/no-config/container-package/src/main/META-INF/vault/filter.xml
new file mode 100644
index 0000000..b1d4809
--- /dev/null
+++ b/src/it/no-config/container-package/src/main/META-INF/vault/filter.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/it/no-config/container-package/src/main/jcr_root/apps/mytenant/config/com.example.mytenant.MyComponent2.cfg.json b/src/it/no-config/container-package/src/main/jcr_root/apps/mytenant/config/com.example.mytenant.MyComponent2.cfg.json
new file mode 100644
index 0000000..0f210bc
--- /dev/null
+++ b/src/it/no-config/container-package/src/main/jcr_root/apps/mytenant/config/com.example.mytenant.MyComponent2.cfg.json
@@ -0,0 +1,4 @@
+{
+ "myproperty1": "myvalue1",
+ "myproperty2": 2
+}
diff --git a/src/it/no-config/container-package/src/main/jcr_root/apps/mytenant/config/com.example.mytenant.MyComponent~name.cfg.json b/src/it/no-config/container-package/src/main/jcr_root/apps/mytenant/config/com.example.mytenant.MyComponent~name.cfg.json
new file mode 100644
index 0000000..0f210bc
--- /dev/null
+++ b/src/it/no-config/container-package/src/main/jcr_root/apps/mytenant/config/com.example.mytenant.MyComponent~name.cfg.json
@@ -0,0 +1,4 @@
+{
+ "myproperty1": "myvalue1",
+ "myproperty2": 2
+}
diff --git a/src/it/no-config/content-package/pom.xml b/src/it/no-config/content-package/pom.xml
new file mode 100644
index 0000000..cc037cf
--- /dev/null
+++ b/src/it/no-config/content-package/pom.xml
@@ -0,0 +1,27 @@
+
+
+ 4.0.0
+
+ content-package
+ content-package
+
+ biz.netcentric.filevault.validator.aem.namespace.it
+ no-config
+ 1.0.0-SNAPSHOT
+
+
+
+
+
+ org.apache.jackrabbit
+ filevault-package-maven-plugin
+
+ content
+
+ my.custom.Hook
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/it/no-config/content-package/src/main/META-INF/vault/filter.xml b/src/it/no-config/content-package/src/main/META-INF/vault/filter.xml
new file mode 100644
index 0000000..428c02b
--- /dev/null
+++ b/src/it/no-config/content-package/src/main/META-INF/vault/filter.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/it/no-config/content-package/src/main/jcr_root/conf/mytenant/my-segment/.content.xml b/src/it/no-config/content-package/src/main/jcr_root/conf/mytenant/my-segment/.content.xml
new file mode 100644
index 0000000..c46a5a8
--- /dev/null
+++ b/src/it/no-config/content-package/src/main/jcr_root/conf/mytenant/my-segment/.content.xml
@@ -0,0 +1,12 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/it/no-config/content-package/src/main/jcr_root/home/users/mytenant/myuser/.content.xml b/src/it/no-config/content-package/src/main/jcr_root/home/users/mytenant/myuser/.content.xml
new file mode 100644
index 0000000..cc02caf
--- /dev/null
+++ b/src/it/no-config/content-package/src/main/jcr_root/home/users/mytenant/myuser/.content.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/src/it/no-config/invoker.properties b/src/it/no-config/invoker.properties
new file mode 100644
index 0000000..6cf0b59
--- /dev/null
+++ b/src/it/no-config/invoker.properties
@@ -0,0 +1,3 @@
+invoker.debug = false
+invoker.buildResult = success
+invoker.goals = clean verify -fae -e
\ No newline at end of file
diff --git a/src/it/no-config/pom.xml b/src/it/no-config/pom.xml
new file mode 100644
index 0000000..dae3608
--- /dev/null
+++ b/src/it/no-config/pom.xml
@@ -0,0 +1,111 @@
+
+
+ 4.0.0
+
+ biz.netcentric.filevault.validator.aem.namespace.it
+ no-config
+ pom
+ 1.0.0-SNAPSHOT
+
+
+
+
+
+ maven-clean-plugin
+ 3.1.0
+
+
+ maven-install-plugin
+ 3.0.0-M1
+
+
+ maven-deploy-plugin
+ 3.0.0-M1
+
+
+ maven-resources-plugin
+ 3.2.0
+
+
+ maven-compiler-plugin
+ 3.8.1
+
+
+ maven-surefire-plugin
+ 3.0.0-M5
+
+
+ org.apache.jackrabbit
+ filevault-package-maven-plugin
+ 1.4.0
+ true
+
+ false
+ src/main/META-INF/vault/filter.xml
+
+
+
+
+ /,/libs,/apps,/oak:index,/etc,/var,/tmp,/conf,/content,/content/campaigns,/content/cq:tags,/content/dam,/content/experience-fragments,/content/projects,/content/screens,/etc/packages,/home/users
+ DEBUG
+
+
+
+
+ tccl:aem.cnd
+
+
+
+
+ DEBUG
+
+
+
+
+
+
+ @project.groupId@
+ @project.artifactId@
+ @project.version@
+
+
+ biz.netcentric.aem
+ aem-nodetypes
+ 2023.10.0
+
+
+
+
+
+
+
+
+
+
+
+ packaging-contentpackage
+
+
+
+ ${basedir}/src/main/jcr_root
+
+
+
+
+
+ org.apache.jackrabbit
+ filevault-package-maven-plugin
+
+
+
+
+
+
+
+ application-package
+ content-package
+ container-package
+
+
+
\ No newline at end of file
diff --git a/src/main/java/biz/netcentric/filevault/validator/aem/namespace/AuthorizableNamespaceValidator.java b/src/main/java/biz/netcentric/filevault/validator/aem/namespace/AuthorizableNamespaceValidator.java
index c1a13f1..f6c0a86 100644
--- a/src/main/java/biz/netcentric/filevault/validator/aem/namespace/AuthorizableNamespaceValidator.java
+++ b/src/main/java/biz/netcentric/filevault/validator/aem/namespace/AuthorizableNamespaceValidator.java
@@ -60,8 +60,9 @@ public AuthorizableNamespaceValidator(
Collection messages = new LinkedList<>();
String principalName =
node.getPropertyValue(PROPERTY_PRINCIPAL_NAME).orElse(null);
- if (allowedPrincipalNamePatterns.stream()
- .noneMatch(pattern -> pattern.matcher(principalName).matches())) {
+ if (!allowedPrincipalNamePatterns.isEmpty()
+ && allowedPrincipalNamePatterns.stream()
+ .noneMatch(pattern -> pattern.matcher(principalName).matches())) {
messages.add(new ValidationMessage(
severity,
String.format(
diff --git a/src/main/java/biz/netcentric/filevault/validator/aem/namespace/OsgiConfigurationNamespaceValidator.java b/src/main/java/biz/netcentric/filevault/validator/aem/namespace/OsgiConfigurationNamespaceValidator.java
index b7bcc81..057db4e 100644
--- a/src/main/java/biz/netcentric/filevault/validator/aem/namespace/OsgiConfigurationNamespaceValidator.java
+++ b/src/main/java/biz/netcentric/filevault/validator/aem/namespace/OsgiConfigurationNamespaceValidator.java
@@ -60,32 +60,30 @@ public OsgiConfigurationNamespaceValidator(
// is it a factory configuration?
boolean isFactoryConfig = subname != null;
Collection messages = new LinkedList<>();
- if (!isFactoryConfig || restrictFactoryConfigurationsToAllowedPidPatterns) {
- if (allowedPidPatterns.stream()
- .noneMatch(pattern -> pattern.matcher(pid).matches())) {
- messages.add(new ValidationMessage(
- severity,
- String.format(
- "OSGi configuration PID '%s' is not allowed to be configured (does not match any of the allowed patterns [%s])",
- pid,
- allowedPidPatterns.stream()
- .map(Pattern::pattern)
- .collect(Collectors.joining(",")))));
- }
+ if (!allowedPidPatterns.isEmpty()
+ && (!isFactoryConfig || restrictFactoryConfigurationsToAllowedPidPatterns)
+ && allowedPidPatterns.stream()
+ .noneMatch(pattern -> pattern.matcher(pid).matches())) {
+ messages.add(new ValidationMessage(
+ severity,
+ String.format(
+ "OSGi configuration PID '%s' is not allowed to be configured (does not match any of the allowed patterns [%s])",
+ pid,
+ allowedPidPatterns.stream().map(Pattern::pattern).collect(Collectors.joining(",")))));
}
- if (isFactoryConfig && !allowedFactoryPidNames.isEmpty()) {
- if (allowedFactoryPidNames.stream()
- .noneMatch(pattern -> pattern.matcher(subname).matches())) {
- messages.add(new ValidationMessage(
- severity,
- String.format(
- "OSGi factory configuration PID '%s' is not allowed with the given subname '%s' (does not match any of the allowed patterns [%s])",
- pid,
- subname,
- allowedFactoryPidNames.stream()
- .map(Pattern::pattern)
- .collect(Collectors.joining(",")))));
- }
+ if (isFactoryConfig
+ && !allowedFactoryPidNames.isEmpty()
+ && allowedFactoryPidNames.stream()
+ .noneMatch(pattern -> pattern.matcher(subname).matches())) {
+ messages.add(new ValidationMessage(
+ severity,
+ String.format(
+ "OSGi factory configuration PID '%s' is not allowed with the given subname '%s' (does not match any of the allowed patterns [%s])",
+ pid,
+ subname,
+ allowedFactoryPidNames.stream()
+ .map(Pattern::pattern)
+ .collect(Collectors.joining(",")))));
}
return messages;
}
diff --git a/src/main/java/biz/netcentric/filevault/validator/aem/namespace/PackageIdNamespaceValidator.java b/src/main/java/biz/netcentric/filevault/validator/aem/namespace/PackageIdNamespaceValidator.java
index 3516b71..006d06d 100644
--- a/src/main/java/biz/netcentric/filevault/validator/aem/namespace/PackageIdNamespaceValidator.java
+++ b/src/main/java/biz/netcentric/filevault/validator/aem/namespace/PackageIdNamespaceValidator.java
@@ -49,8 +49,9 @@ public PackageIdNamespaceValidator(
return Collections.singleton(new ValidationMessage(severity, "Package ID is missing"));
}
Collection messages = new LinkedList<>();
- if (allowedGroupPatterns.stream()
- .noneMatch(pattern -> pattern.matcher(id.getGroup()).matches())) {
+ if (!allowedGroupPatterns.isEmpty()
+ && allowedGroupPatterns.stream()
+ .noneMatch(pattern -> pattern.matcher(id.getGroup()).matches())) {
messages.add(new ValidationMessage(
severity,
String.format(
@@ -58,8 +59,9 @@ public PackageIdNamespaceValidator(
id.getGroup(),
allowedGroupPatterns.stream().map(Pattern::pattern).collect(Collectors.joining(",")))));
}
- if (allowedNamePatterns.stream()
- .noneMatch(pattern -> pattern.matcher(id.getName()).matches())) {
+ if (!allowedNamePatterns.isEmpty()
+ && allowedNamePatterns.stream()
+ .noneMatch(pattern -> pattern.matcher(id.getName()).matches())) {
messages.add(new ValidationMessage(
severity,
String.format(
diff --git a/src/main/java/biz/netcentric/filevault/validator/aem/namespace/ResourceTypeNamespaceValidator.java b/src/main/java/biz/netcentric/filevault/validator/aem/namespace/ResourceTypeNamespaceValidator.java
index 1256f7d..2513a8e 100644
--- a/src/main/java/biz/netcentric/filevault/validator/aem/namespace/ResourceTypeNamespaceValidator.java
+++ b/src/main/java/biz/netcentric/filevault/validator/aem/namespace/ResourceTypeNamespaceValidator.java
@@ -55,31 +55,36 @@ public ResourceTypeNamespaceValidator(
public @Nullable Collection validate(
@NotNull DocViewNode2 node, @NotNull NodeContext nodeContext, boolean isRoot) {
Collection messages = new LinkedList<>();
- String type = node.getPropertyValue(PROPERTY_NAME_RESOURCE_TYPE).orElse(null);
- if (type != null
- && allowedTypePatterns.stream()
- .noneMatch(pattern -> pattern.matcher(type).matches())) {
- messages.add(new ValidationMessage(
- severity,
- String.format(
- "Resource is using type '%s' which is not allowed (does not match any of the allowed patterns [%s])",
- type,
- allowedTypePatterns.stream().map(Pattern::pattern).collect(Collectors.joining(",")))));
+ if (!allowedTypePatterns.isEmpty()) {
+ String type = node.getPropertyValue(PROPERTY_NAME_RESOURCE_TYPE).orElse(null);
+ if (type != null
+ && allowedTypePatterns.stream()
+ .noneMatch(pattern -> pattern.matcher(type).matches())) {
+ messages.add(new ValidationMessage(
+ severity,
+ String.format(
+ "Resource is using type '%s' which is not allowed (does not match any of the allowed patterns [%s])",
+ type,
+ allowedTypePatterns.stream()
+ .map(Pattern::pattern)
+ .collect(Collectors.joining(",")))));
+ }
}
- String superType =
- node.getPropertyValue(PROPERTY_NAME_RESOURCE_SUPER_TYPE).orElse(null);
- if (superType != null
- && !allowedSuperTypePatterns.isEmpty()
- && allowedSuperTypePatterns.stream()
- .noneMatch(pattern -> pattern.matcher(superType).matches())) {
- messages.add(new ValidationMessage(
- severity,
- String.format(
- "Resource is using super type '%s' which is not allowed (does not match any of the allowed patterns [%s])",
- superType,
- allowedSuperTypePatterns.stream()
- .map(Pattern::pattern)
- .collect(Collectors.joining(",")))));
+ if (!allowedSuperTypePatterns.isEmpty()) {
+ String superType =
+ node.getPropertyValue(PROPERTY_NAME_RESOURCE_SUPER_TYPE).orElse(null);
+ if (superType != null
+ && allowedSuperTypePatterns.stream()
+ .noneMatch(pattern -> pattern.matcher(superType).matches())) {
+ messages.add(new ValidationMessage(
+ severity,
+ String.format(
+ "Resource is using super type '%s' which is not allowed (does not match any of the allowed patterns [%s])",
+ superType,
+ allowedSuperTypePatterns.stream()
+ .map(Pattern::pattern)
+ .collect(Collectors.joining(",")))));
+ }
}
return messages;
}