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() {