You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2020/11/26 06:39:53 UTC
[sling-org-apache-sling-feature-extension-apiregions] branch master
updated: SLING-9867 : Update javadocs
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 5fd7683 SLING-9867 : Update javadocs
5fd7683 is described below
commit 5fd7683e308bd0b314d2e6b5ef169fb810540950
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Thu Nov 26 07:39:26 2020 +0100
SLING-9867 : Update javadocs
---
.../apiregions/analyser/CheckConfigurationApi.java | 2 +-
.../apiregions/api/config/ConfigurationApi.java | 6 ++++--
.../validation/ConfigurationValidationResult.java | 23 +++++++++++++++++----
.../config/validation/ConfigurationValidator.java | 24 +++++++++++++++-------
.../api/config/validation/FeatureValidator.java | 14 ++++++-------
.../validation/PropertyValidationResult.java | 3 +++
.../api/config/validation/PropertyValidator.java | 18 ++++++++--------
.../validation/ConfigurationValidatorTest.java | 4 ++--
8 files changed, 63 insertions(+), 31 deletions(-)
diff --git a/src/main/java/org/apache/sling/feature/extension/apiregions/analyser/CheckConfigurationApi.java b/src/main/java/org/apache/sling/feature/extension/apiregions/analyser/CheckConfigurationApi.java
index 20a5d6c..0e84ed9 100644
--- a/src/main/java/org/apache/sling/feature/extension/apiregions/analyser/CheckConfigurationApi.java
+++ b/src/main/java/org/apache/sling/feature/extension/apiregions/analyser/CheckConfigurationApi.java
@@ -70,7 +70,7 @@ public class CheckConfigurationApi implements AnalyserTask{
}
}
if ( !entry.getValue().isValid() ) {
- for(final String err : entry.getValue().getGlobalErrors()) {
+ for(final String err : entry.getValue().getErrors()) {
context.reportError("Configuration " + entry.getKey() + " : " + err);
}
for(final Map.Entry<String, PropertyValidationResult> propEntry : entry.getValue().getPropertyResults().entrySet()) {
diff --git a/src/main/java/org/apache/sling/feature/extension/apiregions/api/config/ConfigurationApi.java b/src/main/java/org/apache/sling/feature/extension/apiregions/api/config/ConfigurationApi.java
index 2d7af47..bab1f7c 100644
--- a/src/main/java/org/apache/sling/feature/extension/apiregions/api/config/ConfigurationApi.java
+++ b/src/main/java/org/apache/sling/feature/extension/apiregions/api/config/ConfigurationApi.java
@@ -46,7 +46,9 @@ public class ConfigurationApi extends AttributeableEntity {
/**
* Get the configuration api from the feature - if it exists.
- *
+ * If the configuration api is updated, the containing feature is left untouched.
+ * {@link #setConfigurationApi(Feature, ConfigurationApi)} can be used to update
+ * the feature.
* @param feature The feature
* @return The configuration api or {@code null}.
* @throws IllegalArgumentException If the extension is wrongly formatted
@@ -58,7 +60,7 @@ public class ConfigurationApi extends AttributeableEntity {
/**
* Get the configuration api from the extension.
- *
+ * If the configuration api is updated, the containing extension is left untouched.
* @param ext The extension
* @return The configuration api or {@code null} if the extension is {@code null}.
* @throws IllegalArgumentException If the extension is wrongly formatted
diff --git a/src/main/java/org/apache/sling/feature/extension/apiregions/api/config/validation/ConfigurationValidationResult.java b/src/main/java/org/apache/sling/feature/extension/apiregions/api/config/validation/ConfigurationValidationResult.java
index f1cb9f4..24595b5 100644
--- a/src/main/java/org/apache/sling/feature/extension/apiregions/api/config/validation/ConfigurationValidationResult.java
+++ b/src/main/java/org/apache/sling/feature/extension/apiregions/api/config/validation/ConfigurationValidationResult.java
@@ -21,16 +21,23 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+/**
+ * A configuration validation result is returned by the {@code ConfigurationValidator}.
+ */
public class ConfigurationValidationResult {
private final Map<String, PropertyValidationResult> propertyResults = new HashMap<>();
- private final List<String> globalErrors = new ArrayList<>();
+ private final List<String> errors = new ArrayList<>();
private final List<String> warnings = new ArrayList<>();
+ /**
+ * Is the configuration valid?
+ * @return {@code true} if it is valid
+ */
public boolean isValid() {
- boolean valid = globalErrors.isEmpty();
+ boolean valid = errors.isEmpty();
if ( valid ) {
for(final PropertyValidationResult r : this.propertyResults.values()) {
if ( !r.isValid() ) {
@@ -42,10 +49,18 @@ public class ConfigurationValidationResult {
return valid;
}
- public List<String> getGlobalErrors() {
- return this.globalErrors;
+ /**
+ * Return the list of errors
+ * @return A list of errors. Might be empty.
+ */
+ public List<String> getErrors() {
+ return this.errors;
}
+ /**
+ * Get a property validation result for each property of the configuration
+ * @return A map of property results keyed by property name
+ */
public Map<String, PropertyValidationResult> getPropertyResults() {
return propertyResults;
}
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 a7e505d..0a4228e 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
@@ -31,7 +31,7 @@ import org.apache.sling.feature.extension.apiregions.api.config.Region;
import org.osgi.framework.Constants;
/**
- * Validator to validate a configuration
+ * Validator to validate a configuration or factory configuration
*/
public class ConfigurationValidator {
@@ -47,6 +47,7 @@ public class ConfigurationValidator {
/**
* Validate a configuration
+ *
* @param config The OSGi configuration
* @param desc The configuration description
* @param region The optional region for the configuration
@@ -56,15 +57,15 @@ public class ConfigurationValidator {
final ConfigurationValidationResult result = new ConfigurationValidationResult();
if ( config.isFactoryConfiguration() ) {
if ( !(desc instanceof FactoryConfigurationDescription) ) {
- result.getGlobalErrors().add("Factory configuration cannot be validated against non factory configuration description");
+ result.getErrors().add("Factory configuration cannot be validated against non factory configuration description");
} else {
- validateProperties(desc, config, result.getPropertyResults(), region);
+ validateProperties(config, desc, result.getPropertyResults(), region);
}
} else {
if ( !(desc instanceof ConfigurationDescription) ) {
- result.getGlobalErrors().add("Configuration cannot be validated against factory configuration description");
+ result.getErrors().add("Configuration cannot be validated against factory configuration description");
} else {
- validateProperties(desc, config, result.getPropertyResults(), region);
+ validateProperties(config, desc, result.getPropertyResults(), region);
}
}
@@ -74,16 +75,25 @@ public class ConfigurationValidator {
return result;
}
- void validateProperties(final ConfigurableEntity desc,
- final Configuration configuration,
+ /**
+ * Validate all properties
+ * @param configuration The OSGi configuration
+ * @param desc The configuration description
+ * @param results The map of results per property
+ * @param region The configuration region
+ */
+ void validateProperties(final Configuration configuration,
+ final ConfigurableEntity desc,
final Map<String, PropertyValidationResult> results,
final Region region) {
final Dictionary<String, Object> properties = configuration.getConfigurationProperties();
+ // validate the described properties
for(final Map.Entry<String, PropertyDescription> propEntry : desc.getPropertyDescriptions().entrySet()) {
final Object value = properties.get(propEntry.getKey());
final PropertyValidationResult result = propertyValidator.validate(value, propEntry.getValue());
results.put(propEntry.getKey(), result);
}
+ // validate additional properties
final Enumeration<String> keyEnum = properties.keys();
while ( keyEnum.hasMoreElements() ) {
final String propName = keyEnum.nextElement();
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 63cdc37..9e2cf44 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
@@ -74,7 +74,7 @@ public class FeatureValidator {
if ( regionInfo == null ) {
final ConfigurationValidationResult cvr = new ConfigurationValidationResult();
- cvr.getGlobalErrors().add("Unable to properly validate configuration, region info cannot be determined");
+ cvr.getErrors().add("Unable to properly validate configuration, region info cannot be determined");
result.getConfigurationResults().put(config.getPid(), cvr);
} else {
if ( config.isFactoryConfiguration() ) {
@@ -84,22 +84,22 @@ public class FeatureValidator {
result.getConfigurationResults().put(config.getPid(), r);
if ( regionInfo.region != Region.INTERNAL ) {
if ( desc.getOperations().isEmpty() ) {
- r.getGlobalErrors().add("No operations allowed for factory configuration");
+ r.getErrors().add("No operations allowed for factory configuration");
} else {
if ( regionInfo.isUpdate && !desc.getOperations().contains(Operation.UPDATE)) {
- r.getGlobalErrors().add("Updating of factory configuration is not allowed");
+ r.getErrors().add("Updating of factory configuration is not allowed");
} else if ( !regionInfo.isUpdate && !desc.getOperations().contains(Operation.CREATE)) {
- r.getGlobalErrors().add("Creation of factory configuration is not allowed");
+ r.getErrors().add("Creation of factory configuration is not allowed");
}
}
if ( desc.getInternalNames().contains(config.getName())) {
- r.getGlobalErrors().add("Factory configuration with name is not allowed");
+ r.getErrors().add("Factory configuration with name is not allowed");
}
}
} else if ( regionInfo.region != Region.INTERNAL && api.getInternalFactoryConfigurations().contains(config.getFactoryPid())) {
final ConfigurationValidationResult cvr = new ConfigurationValidationResult();
- cvr.getGlobalErrors().add("Factory configuration is not allowed");
+ cvr.getErrors().add("Factory configuration is not allowed");
result.getConfigurationResults().put(config.getPid(), cvr);
}
} else {
@@ -109,7 +109,7 @@ public class FeatureValidator {
result.getConfigurationResults().put(config.getPid(), r);
} else if ( regionInfo.region!= Region.INTERNAL && api.getInternalConfigurations().contains(config.getPid())) {
final ConfigurationValidationResult cvr = new ConfigurationValidationResult();
- cvr.getGlobalErrors().add("Configuration is not allowed");
+ cvr.getErrors().add("Configuration is not allowed");
result.getConfigurationResults().put(config.getPid(), cvr);
}
}
diff --git a/src/main/java/org/apache/sling/feature/extension/apiregions/api/config/validation/PropertyValidationResult.java b/src/main/java/org/apache/sling/feature/extension/apiregions/api/config/validation/PropertyValidationResult.java
index b68ef2e..431ff59 100644
--- a/src/main/java/org/apache/sling/feature/extension/apiregions/api/config/validation/PropertyValidationResult.java
+++ b/src/main/java/org/apache/sling/feature/extension/apiregions/api/config/validation/PropertyValidationResult.java
@@ -19,6 +19,9 @@ package org.apache.sling.feature.extension.apiregions.api.config.validation;
import java.util.ArrayList;
import java.util.List;
+/**
+ * Validation result for a property
+ */
public class PropertyValidationResult {
private final List<String> errors = new ArrayList<>();
diff --git a/src/main/java/org/apache/sling/feature/extension/apiregions/api/config/validation/PropertyValidator.java b/src/main/java/org/apache/sling/feature/extension/apiregions/api/config/validation/PropertyValidator.java
index 82f7a1c..370e247 100644
--- a/src/main/java/org/apache/sling/feature/extension/apiregions/api/config/validation/PropertyValidator.java
+++ b/src/main/java/org/apache/sling/feature/extension/apiregions/api/config/validation/PropertyValidator.java
@@ -27,18 +27,20 @@ import org.apache.sling.feature.extension.apiregions.api.config.Option;
import org.apache.sling.feature.extension.apiregions.api.config.PropertyDescription;
/**
- * Validate a configuration property
+ * Validate a configuration property or framework property
*/
public class PropertyValidator {
/**
* Validate the value against the property definition
+ * @param value The value to validate
+ * @param desc The property description
* @return A property validation result
*/
- public PropertyValidationResult validate(final Object value, final PropertyDescription prop) {
+ public PropertyValidationResult validate(final Object value, final PropertyDescription desc) {
final PropertyValidationResult result = new PropertyValidationResult();
if ( value == null ) {
- if ( prop.isRequired() ) {
+ if ( desc.isRequired() ) {
result.getErrors().add("No value provided");
}
} else {
@@ -59,19 +61,19 @@ public class PropertyValidator {
} else {
// single value
values = null;
- validateValue(prop, value, result.getErrors());
+ validateValue(desc, value, result.getErrors());
}
if ( values != null ) {
// array or collection
for(final Object val : values) {
- validateValue(prop, val, result.getErrors());
+ validateValue(desc, val, result.getErrors());
}
- validateList(prop, values, result.getErrors());
+ validateList(desc, values, result.getErrors());
}
- if ( prop.getDeprecated() != null ) {
- result.getWarnings().add(prop.getDeprecated());
+ if ( desc.getDeprecated() != null ) {
+ result.getWarnings().add(desc.getDeprecated());
}
}
return result;
diff --git a/src/test/java/org/apache/sling/feature/extension/apiregions/api/config/validation/ConfigurationValidatorTest.java b/src/test/java/org/apache/sling/feature/extension/apiregions/api/config/validation/ConfigurationValidatorTest.java
index 46c1f57..762305d 100644
--- a/src/test/java/org/apache/sling/feature/extension/apiregions/api/config/validation/ConfigurationValidatorTest.java
+++ b/src/test/java/org/apache/sling/feature/extension/apiregions/api/config/validation/ConfigurationValidatorTest.java
@@ -39,7 +39,7 @@ public class ConfigurationValidatorTest {
final ConfigurationValidationResult result = validator.validate(cfg, fcd, null);
assertFalse(result.isValid());
- assertEquals(1, result.getGlobalErrors().size());
+ assertEquals(1, result.getErrors().size());
}
@Test public void testWrongDescriptionTypeForFactoryConfiguration() {
@@ -48,7 +48,7 @@ public class ConfigurationValidatorTest {
final ConfigurationValidationResult result = validator.validate(cfg, fcd, null);
assertFalse(result.isValid());
- assertEquals(1, result.getGlobalErrors().size());
+ assertEquals(1, result.getErrors().size());
}
@Test public void testDeprecated() {