You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by di...@apache.org on 2022/06/08 10:49:58 UTC
[sling-org-apache-sling-feature-extension-apiregions] branch issue/SLING-11383 created (now 07661fb)
This is an automated email from the ASF dual-hosted git repository.
diru pushed a change to branch issue/SLING-11383
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-extension-apiregions.git
at 07661fb SLING-11383: use per configuration mode for factoyconfig validation
This branch includes the following new commits:
new 07661fb SLING-11383: use per configuration mode for factoyconfig validation
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.
[sling-org-apache-sling-feature-extension-apiregions] 01/01: SLING-11383: use per configuration mode for factoyconfig validation
Posted by di...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
diru pushed a commit to branch issue/SLING-11383
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-extension-apiregions.git
commit 07661fb59f9cef303e4262b5d04a93463dde86e2
Author: Dirk Rudolph <dr...@adobe.com>
AuthorDate: Wed Jun 8 12:49:47 2022 +0200
SLING-11383: use per configuration mode for factoyconfig validation
---
.../api/config/validation/FeatureValidator.java | 10 ++--
.../config/validation/FeatureValidatorTest.java | 60 ++++++++++++++++++++--
2 files changed, 61 insertions(+), 9 deletions(-)
diff --git a/src/main/java/org/apache/sling/feature/extension/apiregions/api/config/validation/FeatureValidator.java b/src/main/java/org/apache/sling/feature/extension/apiregions/api/config/validation/FeatureValidator.java
index ac89b6b..4609b64 100644
--- a/src/main/java/org/apache/sling/feature/extension/apiregions/api/config/validation/FeatureValidator.java
+++ b/src/main/java/org/apache/sling/feature/extension/apiregions/api/config/validation/FeatureValidator.java
@@ -37,6 +37,7 @@ import org.apache.sling.feature.extension.apiregions.api.config.ConfigurationApi
import org.apache.sling.feature.extension.apiregions.api.config.ConfigurationDescription;
import org.apache.sling.feature.extension.apiregions.api.config.FactoryConfigurationDescription;
import org.apache.sling.feature.extension.apiregions.api.config.FrameworkPropertyDescription;
+import org.apache.sling.feature.extension.apiregions.api.config.Mode;
import org.apache.sling.feature.extension.apiregions.api.config.Operation;
import org.apache.sling.feature.extension.apiregions.api.config.Region;
import org.osgi.util.converter.Converter;
@@ -137,23 +138,24 @@ public class FeatureValidator {
if ( config.isFactoryConfiguration() ) {
final FactoryConfigurationDescription desc = api.getFactoryConfigurationDescriptions().get(config.getFactoryPid());
if ( desc != null ) {
+ final Mode validationMode = desc.getMode() != null ? desc.getMode() : api.getMode();
final ConfigurationValidationResult r = configurationValidator.validate(config, desc, regionInfo.region, api.getMode());
result.getConfigurationResults().put(config.getPid(), r);
if ( regionInfo.region != Region.INTERNAL ) {
if ( desc.getOperations().isEmpty() ) {
- ConfigurationValidator.setResult(r, api.getMode(), desc, "No operations allowed for " +
+ ConfigurationValidator.setResult(r, validationMode, desc, "No operations allowed for " +
"factory configuration");
} else {
if ( regionInfo.isUpdate && !desc.getOperations().contains(Operation.UPDATE)) {
- ConfigurationValidator.setResult(r, api.getMode(), desc, "Updating of factory " +
+ ConfigurationValidator.setResult(r, validationMode, desc, "Updating of factory " +
"configuration is not allowed");
} else if ( !regionInfo.isUpdate && !desc.getOperations().contains(Operation.CREATE)) {
- ConfigurationValidator.setResult(r, api.getMode(), desc, "Creation of factory " +
+ ConfigurationValidator.setResult(r, validationMode, desc, "Creation of factory " +
"configuration is not allowed");
}
}
if ( desc.getInternalNames().contains(config.getName())) {
- ConfigurationValidator.setResult(r, api.getMode(), desc, "Factory configuration with " +
+ ConfigurationValidator.setResult(r, validationMode, desc, "Factory configuration with " +
"name is not allowed");
}
}
diff --git a/src/test/java/org/apache/sling/feature/extension/apiregions/api/config/validation/FeatureValidatorTest.java b/src/test/java/org/apache/sling/feature/extension/apiregions/api/config/validation/FeatureValidatorTest.java
index 1f96eb2..216328e 100644
--- a/src/test/java/org/apache/sling/feature/extension/apiregions/api/config/validation/FeatureValidatorTest.java
+++ b/src/test/java/org/apache/sling/feature/extension/apiregions/api/config/validation/FeatureValidatorTest.java
@@ -493,17 +493,29 @@ public class FeatureValidatorTest {
api.getFactoryConfigurationDescriptions().get(FACTORY_PID).getInternalNames().add("b");
ConfigurationApi.setConfigurationApi(f1, api);
+ // global region -> fail
FeatureValidationResult result = validator.validate(f1, api);
assertFalse(result.isValid());
assertFalse(result.getConfigurationResults().get(FACTORY_PID.concat("~a")).isValid());
assertFalse(result.getConfigurationResults().get(FACTORY_PID.concat("~b")).isValid());
assertTrue(result.getConfigurationResults().get(FACTORY_PID.concat("~print")).isValid());
- // internal region
- api.setRegion(Region.INTERNAL);
- ConfigurationApi.setConfigurationApi(f1, api);
- result = validator.validate(f1, api);
- assertTrue(result.isValid());
+ // global region, lenient -> warn
+ api.getFactoryConfigurationDescriptions().get(FACTORY_PID).setMode(Mode.LENIENT);
+ ConfigurationApi.setConfigurationApi(f1, api);
+ result = validator.validate(f1, api);
+ assertTrue(result.isValid());
+ assertEquals(1, result.getConfigurationResults().get(FACTORY_PID.concat("~a")).getWarnings().size());
+ assertEquals(1, result.getConfigurationResults().get(FACTORY_PID.concat("~b")).getWarnings().size());
+ assertEquals(0, result.getConfigurationResults().get(FACTORY_PID.concat("~print")).getWarnings().size());
+
+ // internal region
+ api.getFactoryConfigurationDescriptions().get(FACTORY_PID).setMode(null);
+ ConfigurationApi.setConfigurationApi(f1, api);
+ api.setRegion(Region.INTERNAL);
+ ConfigurationApi.setConfigurationApi(f1, api);
+ result = validator.validate(f1, api);
+ assertTrue(result.isValid());
}
@Test public void testFactoryConfigurationOperationsWithCreate() {
@@ -517,13 +529,30 @@ public class FeatureValidatorTest {
assertFalse(result.isValid());
assertFalse(result.getConfigurationResults().get(FACTORY_PID.concat("~print")).isValid());
+ // no operation, lenient -> warn
+ api.getFactoryConfigurationDescriptions().get(FACTORY_PID).setMode(Mode.LENIENT);
+ api.getFactoryConfigurationDescriptions().get(FACTORY_PID).getOperations().clear();
+ ConfigurationApi.setConfigurationApi(f1, api);
+ result = validator.validate(f1, api);
+ assertTrue(result.isValid());
+ assertEquals(1, result.getConfigurationResults().get(FACTORY_PID.concat("~print")).getWarnings().size());
+
// only update -> fail
+ api.getFactoryConfigurationDescriptions().get(FACTORY_PID).setMode(null);
api.getFactoryConfigurationDescriptions().get(FACTORY_PID).getOperations().add(Operation.UPDATE);
ConfigurationApi.setConfigurationApi(f1, api);
result = validator.validate(f1, api);
assertFalse(result.isValid());
assertFalse(result.getConfigurationResults().get(FACTORY_PID.concat("~print")).isValid());
+ // only update, lenient -> warn
+ api.getFactoryConfigurationDescriptions().get(FACTORY_PID).setMode(Mode.LENIENT);
+ api.getFactoryConfigurationDescriptions().get(FACTORY_PID).getOperations().add(Operation.UPDATE);
+ ConfigurationApi.setConfigurationApi(f1, api);
+ result = validator.validate(f1, api);
+ assertTrue(result.isValid());
+ assertEquals(1, result.getConfigurationResults().get(FACTORY_PID.concat("~print")).getWarnings().size());
+
// only create -> success
api.getFactoryConfigurationDescriptions().get(FACTORY_PID).getOperations().clear();
api.getFactoryConfigurationDescriptions().get(FACTORY_PID).getOperations().add(Operation.CREATE);
@@ -592,19 +621,30 @@ public class FeatureValidatorTest {
this.validator.setFeatureProvider(provider);
// no operation -> fail
+ api.getFactoryConfigurationDescriptions().get(FACTORY_PID).setMode(null);
api.getFactoryConfigurationDescriptions().get(FACTORY_PID).getOperations().clear();
ConfigurationApi.setConfigurationApi(f1, api);
FeatureValidationResult result = validator.validate(f1, api);
assertFalse(result.isValid());
assertFalse(result.getConfigurationResults().get(FACTORY_PID.concat("~print")).isValid());
+ // no operation, lenient -> warn
+ api.getFactoryConfigurationDescriptions().get(FACTORY_PID).setMode(Mode.LENIENT);
+ api.getFactoryConfigurationDescriptions().get(FACTORY_PID).getOperations().clear();
+ ConfigurationApi.setConfigurationApi(f1, api);
+ result = validator.validate(f1, api);
+ assertTrue(result.isValid());
+ assertEquals(1, result.getConfigurationResults().get(FACTORY_PID.concat("~print")).getWarnings().size());
+
// only update -> success
+ api.getFactoryConfigurationDescriptions().get(FACTORY_PID).setMode(null);
api.getFactoryConfigurationDescriptions().get(FACTORY_PID).getOperations().add(Operation.UPDATE);
ConfigurationApi.setConfigurationApi(f1, api);
result = validator.validate(f1, api);
assertTrue(result.isValid());
// only create -> fail
+ api.getFactoryConfigurationDescriptions().get(FACTORY_PID).setMode(null);
api.getFactoryConfigurationDescriptions().get(FACTORY_PID).getOperations().clear();
api.getFactoryConfigurationDescriptions().get(FACTORY_PID).getOperations().add(Operation.CREATE);
ConfigurationApi.setConfigurationApi(f1, api);
@@ -612,7 +652,17 @@ public class FeatureValidatorTest {
assertFalse(result.isValid());
assertFalse(result.getConfigurationResults().get(FACTORY_PID.concat("~print")).isValid());
+ // only create, lenient -> warn
+ api.getFactoryConfigurationDescriptions().get(FACTORY_PID).setMode(Mode.LENIENT);
+ api.getFactoryConfigurationDescriptions().get(FACTORY_PID).getOperations().clear();
+ api.getFactoryConfigurationDescriptions().get(FACTORY_PID).getOperations().add(Operation.CREATE);
+ ConfigurationApi.setConfigurationApi(f1, api);
+ result = validator.validate(f1, api);
+ assertTrue(result.isValid());
+ assertEquals(1, result.getConfigurationResults().get(FACTORY_PID.concat("~print")).getWarnings().size());
+
// update, create -> success
+ api.getFactoryConfigurationDescriptions().get(FACTORY_PID).setMode(null);
api.getFactoryConfigurationDescriptions().get(FACTORY_PID).getOperations().clear();
api.getFactoryConfigurationDescriptions().get(FACTORY_PID).getOperations().add(Operation.CREATE);
api.getFactoryConfigurationDescriptions().get(FACTORY_PID).getOperations().add(Operation.UPDATE);