SLING-10530 : Validation mode is not respected for internal configurations
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 ad47da4..540548b 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
@@ -173,7 +173,7 @@
                 } else if ( Constants.SERVICE_RANKING.equalsIgnoreCase(propName) ) {
                     final Object value = properties.get(propName);
                     if ( !(value instanceof Integer) ) {
-                        setResult(result, mode, "service.ranking must be of type Integer");
+                        PropertyValidator.setResult(result, 0, mode, "service.ranking must be of type Integer");
                     }    
                 } else if ( !isAllowedProperty(propName) && region != Region.INTERNAL && !desc.isAllowAdditionalProperties() ) {
                     result.getErrors().add("Property is not allowed");
@@ -182,7 +182,7 @@
         }
     }
 
-    void setResult(final ConfigurationValidationResult result, final Mode validationMode, final String msg) {
+    static void setResult(final ConfigurationValidationResult result, final Mode validationMode, final String msg) {
         if ( validationMode == Mode.STRICT ) {
             result.getErrors().add(msg);
         } else if ( validationMode == Mode.LENIENT || validationMode == Mode.DEFINITIVE ) {
@@ -193,17 +193,6 @@
         }
     }
 
-    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);
-        }
-        if ( validationMode == Mode.DEFINITIVE || validationMode == Mode.SILENT_DEFINITIVE ) {
-            result.setUseDefaultValue(true);
-        }
-    }
-    
     private boolean isAllowedProperty(final String name) {
         for(final String allowed : ALLOWED_PROPERTIES) {
             if ( allowed.equalsIgnoreCase(name) ) {
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 7b90df7..dcbb162 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
@@ -30,6 +30,7 @@
 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;
 
@@ -124,22 +125,22 @@
                         result.getConfigurationResults().put(config.getPid(), r);
                         if ( regionInfo.region != Region.INTERNAL ) {
                             if ( desc.getOperations().isEmpty() ) {
-                                r.getErrors().add("No operations allowed for factory configuration");
+                                ConfigurationValidator.setResult(r, api.getMode(), "No operations allowed for factory configuration");
                             } else {
                                 if ( regionInfo.isUpdate && !desc.getOperations().contains(Operation.UPDATE)) {
-                                    r.getErrors().add("Updating of factory configuration is not allowed");
+                                    ConfigurationValidator.setResult(r, api.getMode(), "Updating of factory configuration is not allowed");
                                 } else if ( !regionInfo.isUpdate && !desc.getOperations().contains(Operation.CREATE)) {
-                                    r.getErrors().add("Creation of factory configuration is not allowed");
+                                    ConfigurationValidator.setResult(r, api.getMode(), "Creation of factory configuration is not allowed");
                                 }
                             }
                             if ( desc.getInternalNames().contains(config.getName())) {
-                                r.getErrors().add("Factory configuration with name is not allowed");
+                                ConfigurationValidator.setResult(r, api.getMode(), "Factory configuration with name is not allowed");
                             }
                         }                        
 
                     } else if ( regionInfo.region != Region.INTERNAL && api.getInternalFactoryConfigurations().contains(config.getFactoryPid())) {
                         final ConfigurationValidationResult cvr = new ConfigurationValidationResult();
-                        cvr.getErrors().add("Factory configuration is not allowed");
+                        ConfigurationValidator.setResult(cvr, api.getMode(), "Factory configuration is not allowed");
                         result.getConfigurationResults().put(config.getPid(), cvr);
                     }
                 } else {
@@ -149,7 +150,7 @@
                         result.getConfigurationResults().put(config.getPid(), r);
                     } else if ( regionInfo.region!= Region.INTERNAL && api.getInternalConfigurations().contains(config.getPid())) {
                         final ConfigurationValidationResult cvr = new ConfigurationValidationResult();
-                        cvr.getErrors().add("Configuration is not allowed");
+                        ConfigurationValidator.setResult(cvr, api.getMode(), "Configuration is not allowed");
                         result.getConfigurationResults().put(config.getPid(), cvr);
                     } 
                 }    
@@ -172,7 +173,7 @@
                     result.getFrameworkPropertyResults().put(frameworkProperty, pvr);
                 } else if ( regionInfo.region != Region.INTERNAL && api.getInternalFrameworkProperties().contains(frameworkProperty) ) {
                     final PropertyValidationResult pvr = new PropertyValidationResult();
-                    pvr.getErrors().add("Framework property is not allowed");
+                    PropertyValidator.setResult(pvr, null, api.getMode(), "Framework property is not allowed");
                     result.getFrameworkPropertyResults().put(frameworkProperty, pvr);
                 }
             } 
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 1039be4..2e31db9 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
@@ -120,17 +120,21 @@
 	}
 
     void setResult(final Context context, final String msg) {
-        if ( context.validationMode == Mode.STRICT ) {
-            context.result.getErrors().add(msg);
-        } else if ( context.validationMode == Mode.LENIENT || context.validationMode == Mode.DEFINITIVE ) {
-            context.result.getWarnings().add(msg);
-        }
-        if ( context.validationMode == Mode.DEFINITIVE || context.validationMode == Mode.SILENT_DEFINITIVE ) {
-            context.result.setUseDefaultValue(true);
-            context.result.setDefaultValue(context.description.getDefaultValue());
-        }
+        setResult(context.result, context.description.getDefaultValue(), context.validationMode, msg);
     }
 
+    static void setResult(final PropertyValidationResult result, final Object defaultValue, 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);
+        }
+        if ( validationMode == Mode.DEFINITIVE || validationMode == Mode.SILENT_DEFINITIVE ) {
+            result.setUseDefaultValue(true);
+            result.setDefaultValue(defaultValue);
+        }
+    }
+    
     /**
      * Validate a multi value
      * @param prop The property description