This is an automated email from the ASF dual-hosted git repository.
cziegeler pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-extension-apiregions.git
The following commit(s) were added to refs/heads/master by this push:
new b7fe2b4 SLING-10117 : Support different configuration validation modes
b7fe2b4 is described below
commit b7fe2b483f20c9daa0b95f80fff7bba0a549130c
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Fri Feb 12 16:09:27 2021 +0100
SLING-10117 : Support different configuration validation modes
---
.../api/config/validation/ConfigurationValidator.java | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git
a/src/main/java/org/apache/sling/feature/extension/apiregions/api/config/validation/ConfigurationValidator.java
b/src/main/java/org/apache/sling/feature/extension/apiregions/api/config/validation/ConfigurationValidator.java
index 44e16d4..f817e73 100644
---
a/src/main/java/org/apache/sling/feature/extension/apiregions/api/config/validation/ConfigurationValidator.java
+++
b/src/main/java/org/apache/sling/feature/extension/apiregions/api/config/validation/ConfigurationValidator.java
@@ -70,18 +70,20 @@ public class ConfigurationValidator {
*/
public ConfigurationValidationResult validate(final Configuration config,
final ConfigurableEntity desc,
final Region region, final Mode mode) {
+ final Mode validationMode = desc.getMode() != null ? desc.getMode() :
(mode != null ? mode : Mode.STRICT);
+
final ConfigurationValidationResult result = new
ConfigurationValidationResult();
if ( config.isFactoryConfiguration() ) {
if ( !(desc instanceof FactoryConfigurationDescription) ) {
result.getErrors().add("Factory configuration cannot be
validated against non factory configuration description");
} else {
- validateProperties(config, desc, result.getPropertyResults(),
region, mode);
+ validateProperties(config, desc, result.getPropertyResults(),
region, validationMode);
}
} else {
if ( !(desc instanceof ConfigurationDescription) ) {
result.getErrors().add("Configuration cannot be validated
against factory configuration description");
} else {
- validateProperties(config, desc, result.getPropertyResults(),
region, mode);
+ validateProperties(config, desc, result.getPropertyResults(),
region, validationMode);
}
}
@@ -120,7 +122,7 @@ public class ConfigurationValidator {
if ( Constants.SERVICE_RANKING.equalsIgnoreCase(propName) ) {
final Object value = properties.get(propName);
if ( !(value instanceof Integer) ) {
- result.getErrors().add("service.ranking must be of
type Integer");
+ setResult(result, mode, "service.ranking must be of
type Integer");
}
} else if ( !isAllowedProperty(propName) && region !=
Region.INTERNAL ) {
result.getErrors().add("Property is not allowed");
@@ -129,6 +131,14 @@ public class ConfigurationValidator {
}
}
+ void setResult(final PropertyValidationResult result, final Mode
validationMode, final String msg) {
+ if ( validationMode == Mode.STRICT ) {
+ result.getErrors().add(msg);
+ } else if ( validationMode == Mode.LENIENT || validationMode ==
Mode.DEFINITIVE ) {
+ result.getWarnings().add(msg);
+ }
+ }
+
private boolean isAllowedProperty(final String name) {
for(final String allowed : ALLOWED_PROPERTIES) {
if ( allowed.equalsIgnoreCase(name) ) {