Renamed some classes.

Signed-off-by: Anatole Tresch <[email protected]>


Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/commit/f030e122
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/tree/f030e122
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/diff/f030e122

Branch: refs/heads/configjsr
Commit: f030e1225d2d28a097b5ba3c773c7ac7b8696d7d
Parents: 7dbbbe5
Author: Anatole Tresch <[email protected]>
Authored: Mon Feb 5 20:04:05 2018 +0100
Committer: Anatole Tresch <[email protected]>
Committed: Mon Feb 5 20:04:05 2018 +0100

----------------------------------------------------------------------
 .../apache/tamaya/validation/ConfigArea.java    |  37 +++
 .../tamaya/validation/ConfigValidation.java     |  78 ++++++
 .../validation/ConfigValidationResult.java      | 203 ++++++++++++++++
 .../apache/tamaya/validation/Validation.java    | 203 ----------------
 .../tamaya/validation/ValidationManager.java    |  56 +++--
 .../tamaya/validation/ValidationModel.java      |  78 ------
 .../tamaya/validation/ValidationTarget.java     |  37 ---
 .../internal/ConfigValidationBean.java          |  43 ++--
 .../ConfiguredInlineModelProviderSpi.java       |  10 +-
 .../ConfiguredPropertiesModelProviderSpi.java   |  10 +-
 .../ConfiguredResourcesModelProviderSpi.java    |  10 +-
 .../ConfiguredTypeEventsModelPopulator.java     |  14 +-
 .../ConfiguredTypeEventsModelProvider.java      |  14 +-
 .../validation/spi/AbstractConfigModel.java     |  88 -------
 .../spi/AbstractConfigValidation.java           |  88 +++++++
 .../validation/spi/ConfigValidationMBean.java   |   6 +-
 .../spi/ConfigValidationProviderSpi.java        |  39 +++
 .../validation/spi/ConfigValidationReader.java  |  18 +-
 .../tamaya/validation/spi/ValidateGroup.java    | 110 ---------
 .../validation/spi/ValidateParameter.java       | 242 -------------------
 .../tamaya/validation/spi/ValidateSection.java  | 201 ---------------
 .../tamaya/validation/spi/ValidatedGroup.java   | 110 +++++++++
 .../validation/spi/ValidatedParameter.java      | 242 +++++++++++++++++++
 .../tamaya/validation/spi/ValidatedSection.java | 201 +++++++++++++++
 .../spi/ValidationModelProviderSpi.java         |  39 ---
 ...a.validation.spi.ConfigValidationProviderSpi |  22 ++
 ...ya.validation.spi.ValidationModelProviderSpi |  22 --
 .../validation/ConfigModelProviderTest.java     |  32 +--
 .../internal/ConfigDocumentationBeanTest.java   |   6 +-
 29 files changed, 1128 insertions(+), 1131 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/f030e122/validation/src/main/java/org/apache/tamaya/validation/ConfigArea.java
----------------------------------------------------------------------
diff --git 
a/validation/src/main/java/org/apache/tamaya/validation/ConfigArea.java 
b/validation/src/main/java/org/apache/tamaya/validation/ConfigArea.java
new file mode 100644
index 0000000..89df2c8
--- /dev/null
+++ b/validation/src/main/java/org/apache/tamaya/validation/ConfigArea.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.tamaya.validation;
+
+/**
+ * This enumeration defines the types of supported validations.
+ */
+public enum ConfigArea {
+    /**
+     * A configuration section.
+     */
+    Section,
+    /**
+     * A configuration paramter.
+     */
+    Parameter,
+    /**
+     * ConfigModel that is a container of other validations.
+     */
+    Group,
+}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/f030e122/validation/src/main/java/org/apache/tamaya/validation/ConfigValidation.java
----------------------------------------------------------------------
diff --git 
a/validation/src/main/java/org/apache/tamaya/validation/ConfigValidation.java 
b/validation/src/main/java/org/apache/tamaya/validation/ConfigValidation.java
new file mode 100644
index 0000000..29a418b
--- /dev/null
+++ 
b/validation/src/main/java/org/apache/tamaya/validation/ConfigValidation.java
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.tamaya.validation;
+
+
+import javax.config.Config;
+import java.util.Collection;
+
+/**
+ * Base structure describing a validated item, by default a parameter or a 
section.
+ */
+public interface ConfigValidation {
+
+    /**
+     * Access the owner.
+     * @return the owner of this model, never null.
+     */
+    String getOwner();
+
+    /**
+     * Get the type of item that is modelled.
+     * @return the modelled type, never null.
+     */
+    ConfigArea getArea();
+
+    /**
+     * Get the item's name, it should minimally describe the validation. 
Examples are:
+     * <pre>
+     *     Sections: a.b.c
+     *     Params: a.b.c.paramName
+     *     Filter: a.b.c.FilterImplClass
+     *     Dependency: mydepClassname
+     *     CombinationPolicy: a.b.c.MyCombinationPolicyClass
+     * </pre>
+     * @return the item's name.
+     */
+    String getName();
+
+    /**
+     * Check if this validation is a required one.
+     * @return true, if this validation is required.
+     */
+    boolean isRequired();
+
+    /**
+     * Get an description of the item, using the default locale. The 
description is basically optional
+     * though it is higly recommended to provide a description, so the 
validation issues is well
+     * resolvable.
+     *
+     * @return the description required, or null.
+     */
+    String getDescription();
+
+    /**
+     * Validates the item and all its children against the given configuration.
+     *
+     * @param config the configuration to be validated against, not null.
+     * @return the validation result, or null, if not applicable.
+     */
+    Collection<ConfigValidationResult> validate(Config config);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/f030e122/validation/src/main/java/org/apache/tamaya/validation/ConfigValidationResult.java
----------------------------------------------------------------------
diff --git 
a/validation/src/main/java/org/apache/tamaya/validation/ConfigValidationResult.java
 
b/validation/src/main/java/org/apache/tamaya/validation/ConfigValidationResult.java
new file mode 100644
index 0000000..d6ee091
--- /dev/null
+++ 
b/validation/src/main/java/org/apache/tamaya/validation/ConfigValidationResult.java
@@ -0,0 +1,203 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.tamaya.validation;
+
+import org.apache.tamaya.validation.spi.AbstractConfigValidation;
+
+import javax.config.Config;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Objects;
+
+/**
+ * Models a partial configuration configModel result.
+ */
+public final class ConfigValidationResult {
+    /**
+     * the config section.
+     */
+    private final ConfigValidation configModel;
+    /**
+     * The configModel result.
+     */
+    private final ValidationType result;
+    /**
+     * The configModel message.
+     */
+    private final String message;
+
+    /**
+     * Creates a new ValidationResult.
+     *
+     * @param configModel the configModel item, not null.
+     * @return a new validation result containing valid parts of the given 
model.
+     */
+    public static ConfigValidationResult checkValid(ConfigValidation 
configModel) {
+        return new ConfigValidationResult(configModel, ValidationType.VALID, 
null);
+    }
+
+    /**
+     * Creates a new ValidationResult.
+     *
+     * @param configModel the configModel item, not null.
+     * @return a new validation result containing missing parts of the given 
model.
+     */
+    public static ConfigValidationResult checkMissing(ConfigValidation 
configModel) {
+        return new ConfigValidationResult(configModel, ValidationType.MISSING, 
null);
+    }
+
+    /**
+     * Creates a new ValidationResult.
+     *
+     * @param configModel the configModel item, not null.
+     * @param message Additional message to be shown (optional).
+     * @return a new validation result containing missing parts of the given 
model with a message.
+     */
+    public static ConfigValidationResult checkMissing(ConfigValidation 
configModel, String message) {
+        return new ConfigValidationResult(configModel, ValidationType.MISSING, 
message);
+    }
+
+    /**
+     * Creates a new ValidationResult.
+     *
+     * @param configModel the configModel item, not null.
+     * @param error error message to add.
+     * @return a new validation result containing erroneous parts of the given 
model with the given error message.
+     */
+    public static ConfigValidationResult checkError(ConfigValidation 
configModel, String error) {
+        return new ConfigValidationResult(configModel, ValidationType.ERROR, 
error);
+    }
+
+    /**
+     * Creates a new ValidationResult.
+     *
+     * @param configModel the configModel item, not null.
+     * @param warning warning message to add.
+     * @return a new validation result containing warning parts of the given 
model with the given warning message.
+     */
+    public static ConfigValidationResult checkWarning(ConfigValidation 
configModel, String warning) {
+        return new ConfigValidationResult(configModel, ValidationType.WARNING, 
warning);
+    }
+
+    /**
+     * Creates a new ValidationResult.
+     *
+     * @param configModel the configModel item, not null.
+     * @param alternativeUsage allows setting a message to indicate 
non-deprecated replacement, maybe null.
+     * @return a new validation result containing deprecated parts of the 
given model with an optional message.
+     */
+    public static ConfigValidationResult checkDeprecation(ConfigValidation 
configModel, String alternativeUsage) {
+        return new ConfigValidationResult(configModel, 
ValidationType.DEPRECATED, alternativeUsage != null ? "Use instead: " + 
alternativeUsage : null);
+    }
+
+    /**
+     * Creates a new ValidationResult.
+     *
+     * @param configModel the configModel item, not null.
+     * @return a new validation result containing deprecated parts of the 
given model.
+     */
+    public static ConfigValidationResult checkDeprecation(ConfigValidation 
configModel) {
+        return new ConfigValidationResult(configModel, 
ValidationType.DEPRECATED, null);
+    }
+
+    /**
+     * Creates a new ValidationResult.
+     *
+     * @param owner owner
+     * @param key the name/model key
+     * @param type model type 
+     * @return a corresponding configModel item
+     */
+    public static ConfigValidationResult checkUndefined(final String owner, 
final String key, final ConfigArea type) {
+        return new ConfigValidationResult(new AbstractConfigValidation(owner, 
key, false, "Undefined key: " + key) {
+
+            @Override
+            public ConfigArea getArea() {
+                return type;
+            }
+
+            @Override
+            public Collection<ConfigValidationResult> validate(Config config) {
+                return Collections.emptyList();
+            }
+        }, ValidationType.UNDEFINED, null);
+    }
+
+
+    /**
+     * Constructor.
+     *
+     * @param configModel the configModel item, not null.
+     * @param result     the configModel result, not null.
+     * @param message    the detail message.
+     * @return new validation result.
+     */
+    public static ConfigValidationResult of(ConfigValidation configModel, 
ValidationType result, String message) {
+        return new ConfigValidationResult(configModel, result, message);
+    }
+
+
+    /**
+     * Constructor.
+     *
+     * @param configModel the configModel item, not null.
+     * @param result     the configModel result, not null.
+     * @param message    the detail message.
+     */
+    private ConfigValidationResult(ConfigValidation configModel, 
ValidationType result, String message) {
+        this.message = message;
+        this.configModel = Objects.requireNonNull(configModel);
+        this.result = Objects.requireNonNull(result);
+    }
+
+    /**
+     * Get the configModel section.
+     *
+     * @return the section, never null.
+     */
+    public ConfigValidation getConfigModel() {
+        return configModel;
+    }
+
+    /**
+     * Get the configModel result.
+     *
+     * @return the result, never null.
+     */
+    public ValidationType getResult() {
+        return result;
+    }
+
+    /**
+     * Get the detail message.
+     *
+     * @return the detail message, or null.
+     */
+    public String getMessage() {
+        return message;
+    }
+
+    @Override
+    public String toString() {
+        if (message != null) {
+            return result + ": " + configModel.getName() + " (" + 
configModel.getArea() + ") -> " + message + '\n';
+        }
+        return result + ": " + configModel.getName() + " (" + 
configModel.getArea() + ")";
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/f030e122/validation/src/main/java/org/apache/tamaya/validation/Validation.java
----------------------------------------------------------------------
diff --git 
a/validation/src/main/java/org/apache/tamaya/validation/Validation.java 
b/validation/src/main/java/org/apache/tamaya/validation/Validation.java
deleted file mode 100644
index d9c4ba1..0000000
--- a/validation/src/main/java/org/apache/tamaya/validation/Validation.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.tamaya.validation;
-
-import org.apache.tamaya.validation.spi.AbstractConfigModel;
-
-import javax.config.Config;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Objects;
-
-/**
- * Models a partial configuration configModel result.
- */
-public final class Validation {
-    /**
-     * the config section.
-     */
-    private final ValidationModel configModel;
-    /**
-     * The configModel result.
-     */
-    private final ValidationType result;
-    /**
-     * The configModel message.
-     */
-    private final String message;
-
-    /**
-     * Creates a new ValidationResult.
-     *
-     * @param configModel the configModel item, not null.
-     * @return a new validation result containing valid parts of the given 
model.
-     */
-    public static Validation checkValid(ValidationModel configModel) {
-        return new Validation(configModel, ValidationType.VALID, null);
-    }
-
-    /**
-     * Creates a new ValidationResult.
-     *
-     * @param configModel the configModel item, not null.
-     * @return a new validation result containing missing parts of the given 
model.
-     */
-    public static Validation checkMissing(ValidationModel configModel) {
-        return new Validation(configModel, ValidationType.MISSING, null);
-    }
-
-    /**
-     * Creates a new ValidationResult.
-     *
-     * @param configModel the configModel item, not null.
-     * @param message Additional message to be shown (optional).
-     * @return a new validation result containing missing parts of the given 
model with a message.
-     */
-    public static Validation checkMissing(ValidationModel configModel, String 
message) {
-        return new Validation(configModel, ValidationType.MISSING, message);
-    }
-
-    /**
-     * Creates a new ValidationResult.
-     *
-     * @param configModel the configModel item, not null.
-     * @param error error message to add.
-     * @return a new validation result containing erroneous parts of the given 
model with the given error message.
-     */
-    public static Validation checkError(ValidationModel configModel, String 
error) {
-        return new Validation(configModel, ValidationType.ERROR, error);
-    }
-
-    /**
-     * Creates a new ValidationResult.
-     *
-     * @param configModel the configModel item, not null.
-     * @param warning warning message to add.
-     * @return a new validation result containing warning parts of the given 
model with the given warning message.
-     */
-    public static Validation checkWarning(ValidationModel configModel, String 
warning) {
-        return new Validation(configModel, ValidationType.WARNING, warning);
-    }
-
-    /**
-     * Creates a new ValidationResult.
-     *
-     * @param configModel the configModel item, not null.
-     * @param alternativeUsage allows setting a message to indicate 
non-deprecated replacement, maybe null.
-     * @return a new validation result containing deprecated parts of the 
given model with an optional message.
-     */
-    public static Validation checkDeprecation(ValidationModel configModel, 
String alternativeUsage) {
-        return new Validation(configModel, ValidationType.DEPRECATED, 
alternativeUsage != null ? "Use instead: " + alternativeUsage : null);
-    }
-
-    /**
-     * Creates a new ValidationResult.
-     *
-     * @param configModel the configModel item, not null.
-     * @return a new validation result containing deprecated parts of the 
given model.
-     */
-    public static Validation checkDeprecation(ValidationModel configModel) {
-        return new Validation(configModel, ValidationType.DEPRECATED, null);
-    }
-
-    /**
-     * Creates a new ValidationResult.
-     *
-     * @param owner owner
-     * @param key the name/model key
-     * @param type model type 
-     * @return a corresponding configModel item
-     */
-    public static Validation checkUndefined(final String owner, final String 
key, final ValidationTarget type) {
-        return new Validation(new AbstractConfigModel(owner, key, false, 
"Undefined key: " + key) {
-
-            @Override
-            public ValidationTarget getType() {
-                return type;
-            }
-
-            @Override
-            public Collection<Validation> validate(Config config) {
-                return Collections.emptyList();
-            }
-        }, ValidationType.UNDEFINED, null);
-    }
-
-
-    /**
-     * Constructor.
-     *
-     * @param configModel the configModel item, not null.
-     * @param result     the configModel result, not null.
-     * @param message    the detail message.
-     * @return new validation result.
-     */
-    public static Validation of(ValidationModel configModel, ValidationType 
result, String message) {
-        return new Validation(configModel, result, message);
-    }
-
-
-    /**
-     * Constructor.
-     *
-     * @param configModel the configModel item, not null.
-     * @param result     the configModel result, not null.
-     * @param message    the detail message.
-     */
-    private Validation(ValidationModel configModel, ValidationType result, 
String message) {
-        this.message = message;
-        this.configModel = Objects.requireNonNull(configModel);
-        this.result = Objects.requireNonNull(result);
-    }
-
-    /**
-     * Get the configModel section.
-     *
-     * @return the section, never null.
-     */
-    public ValidationModel getConfigModel() {
-        return configModel;
-    }
-
-    /**
-     * Get the configModel result.
-     *
-     * @return the result, never null.
-     */
-    public ValidationType getResult() {
-        return result;
-    }
-
-    /**
-     * Get the detail message.
-     *
-     * @return the detail message, or null.
-     */
-    public String getMessage() {
-        return message;
-    }
-
-    @Override
-    public String toString() {
-        if (message != null) {
-            return result + ": " + configModel.getName() + " (" + 
configModel.getType() + ") -> " + message + '\n';
-        }
-        return result + ": " + configModel.getName() + " (" + 
configModel.getType() + ")";
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/f030e122/validation/src/main/java/org/apache/tamaya/validation/ValidationManager.java
----------------------------------------------------------------------
diff --git 
a/validation/src/main/java/org/apache/tamaya/validation/ValidationManager.java 
b/validation/src/main/java/org/apache/tamaya/validation/ValidationManager.java
index aca56e2..db59a88 100644
--- 
a/validation/src/main/java/org/apache/tamaya/validation/ValidationManager.java
+++ 
b/validation/src/main/java/org/apache/tamaya/validation/ValidationManager.java
@@ -19,7 +19,7 @@
 package org.apache.tamaya.validation;
 
 import org.apache.tamaya.validation.spi.ConfigValidationMBean;
-import org.apache.tamaya.validation.spi.ValidationModelProviderSpi;
+import org.apache.tamaya.validation.spi.ConfigValidationProviderSpi;
 import org.apache.tamaya.base.ServiceContextManager;
 
 import javax.config.Config;
@@ -30,9 +30,7 @@ import java.lang.management.ManagementFactory;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 import java.util.logging.Level;
@@ -48,7 +46,7 @@ public final class ValidationManager {
 
     private static final ValidationManager INSTANCE = new ValidationManager();
 
-    private List<ValidationModel> models = new ArrayList<>();
+    private List<ConfigValidation> models = new ArrayList<>();
 
     /**
      * Get the singleton instance.
@@ -62,8 +60,8 @@ public final class ValidationManager {
      * Singleton constructor.
      */
     private ValidationManager() {
-        for (ValidationModelProviderSpi model : 
ServiceContextManager.getServiceContext().getServices(ValidationModelProviderSpi.class))
 {
-            models.addAll(model.getConfigModels());
+        for (ConfigValidationProviderSpi model : 
ServiceContextManager.getServiceContext().getServices(ConfigValidationProviderSpi.class))
 {
+            models.addAll(model.getConfigValidations());
         }
         models.sort((k1, k2) -> k2.getName().compareTo(k2.getName()));
     }
@@ -76,8 +74,8 @@ public final class ValidationManager {
         StringBuilder b = new StringBuilder();
         b.append("TYPE    OWNER      NAME                                      
        MANDATORY   DESCRIPTION\n");
         
b.append("-----------------------------------------------------------------------------------------------------\n");
-        for(ValidationModel model:models){
-            switch(model.getType()){
+        for(ConfigValidation model:models){
+            switch(model.getArea()){
                 case Parameter:
                     b.append("PARAM   ");
                     break;
@@ -124,7 +122,7 @@ public final class ValidationManager {
      *
      * @return the sections defined, never null.
      */
-    public Collection<ValidationModel> getModels() {
+    public Collection<ConfigValidation> getModels() {
         return Collections.unmodifiableCollection(models);
     }
 
@@ -137,9 +135,9 @@ public final class ValidationManager {
      * @param <T> type of the model to filter for.
      * @return the sections defined, never null.
      */
-    public <T extends ValidationModel> T getModel(String name, Class<T> 
modelType) {
-        for (ValidationModelProviderSpi model : 
ServiceContextManager.getServiceContext().getServices(ValidationModelProviderSpi.class))
 {
-            for(ValidationModel configModel : model.getConfigModels()) {
+    public <T extends ConfigValidation> T getModel(String name, Class<T> 
modelType) {
+        for (ConfigValidationProviderSpi model : 
ServiceContextManager.getServiceContext().getServices(ConfigValidationProviderSpi.class))
 {
+            for(ConfigValidation configModel : model.getConfigValidations()) {
                 if(configModel.getName().equals(name) && 
configModel.getClass().equals(modelType)) {
                     return modelType.cast(configModel);
                 }
@@ -154,14 +152,14 @@ public final class ValidationManager {
      * @param targets the target types only to be returned (optional).
      * @return the sections defined, never null.
      */
-    public Collection<ValidationModel> findModels(String namePattern, 
ValidationTarget... targets) {
-        List<ValidationModel> result = new ArrayList<>();
-        for (ValidationModelProviderSpi model : 
ServiceContextManager.getServiceContext().getServices(ValidationModelProviderSpi.class))
 {
-            for(ValidationModel configModel : model.getConfigModels()) {
+    public Collection<ConfigValidation> findModels(String namePattern, 
ConfigArea... targets) {
+        List<ConfigValidation> result = new ArrayList<>();
+        for (ConfigValidationProviderSpi model : 
ServiceContextManager.getServiceContext().getServices(ConfigValidationProviderSpi.class))
 {
+            for(ConfigValidation configModel : model.getConfigValidations()) {
                 if(configModel.getName().matches(namePattern)) {
                     if(targets.length>0){
-                        for(ValidationTarget tgt:targets){
-                            if(configModel.getType().equals(tgt)){
+                        for(ConfigArea tgt:targets){
+                            if(configModel.getArea().equals(tgt)){
                                 result.add(configModel);
                                 break;
                             }
@@ -181,7 +179,7 @@ public final class ValidationManager {
      * @param config the configuration to be validated against, not null.
      * @return the validation results, never null.
      */
-    public Collection<Validation> validate(Config config) {
+    public Collection<ConfigValidationResult> validate(Config config) {
         return validate(config, false);
     }
 
@@ -192,9 +190,9 @@ public final class ValidationManager {
      * @param showUndefined allows filtering for undefined configuration 
elements.
      * @return the validation results, never null.
      */
-    public Collection<Validation> validate(Config config, boolean 
showUndefined) {
-        List<Validation> result = new ArrayList<>();
-        for (ValidationModel defConf : getModels()) {
+    public Collection<ConfigValidationResult> validate(Config config, boolean 
showUndefined) {
+        List<ConfigValidationResult> result = new ArrayList<>();
+        for (ConfigValidation defConf : getModels()) {
             result.addAll(defConf.validate(config));
         }
         if(showUndefined){
@@ -202,27 +200,27 @@ public final class ValidationManager {
             Set<String> keys = new HashSet<>();
             map.forEach(keys::add);
             Set<String> areas = extractTransitiveAreas(keys);
-            for (ValidationModel defConf : getModels()) {
-                if(ValidationTarget.Section.equals(defConf.getType())){
+            for (ConfigValidation defConf : getModels()) {
+                if(ConfigArea.Section.equals(defConf.getArea())){
                     areas.removeIf(area -> area.matches(defConf.getName()));
                 }
-                if(ValidationTarget.Parameter.equals(defConf.getType())){
+                if(ConfigArea.Parameter.equals(defConf.getArea())){
                     keys.remove(defConf.getName());
                 }
             }
             outer:for(String key:keys){
-                for (ValidationModel defConf : getModels()) {
-                    if(ValidationTarget.Section.equals(defConf.getType())){
+                for (ConfigValidation defConf : getModels()) {
+                    if(ConfigArea.Section.equals(defConf.getArea())){
                         if(defConf.getName().endsWith(".*") && 
key.matches(defConf.getName())){
                             // Ignore parameters that are part of transitive 
section.
                             continue outer;
                         }
                     }
                 }
-                result.add(Validation.checkUndefined("<auto>", key, 
ValidationTarget.Parameter));
+                result.add(ConfigValidationResult.checkUndefined("<auto>", 
key, ConfigArea.Parameter));
             }
             for(String area:areas){
-                result.add(Validation.checkUndefined("<auto>", area, 
ValidationTarget.Section));
+                result.add(ConfigValidationResult.checkUndefined("<auto>", 
area, ConfigArea.Section));
             }
         }
         return result;

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/f030e122/validation/src/main/java/org/apache/tamaya/validation/ValidationModel.java
----------------------------------------------------------------------
diff --git 
a/validation/src/main/java/org/apache/tamaya/validation/ValidationModel.java 
b/validation/src/main/java/org/apache/tamaya/validation/ValidationModel.java
deleted file mode 100644
index 01c8cb6..0000000
--- a/validation/src/main/java/org/apache/tamaya/validation/ValidationModel.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.tamaya.validation;
-
-
-import javax.config.Config;
-import java.util.Collection;
-
-/**
- * Base structure describing a validated item, by default a parameter or a 
section.
- */
-public interface ValidationModel {
-
-    /**
-     * Access the owner.
-     * @return the owner of this model, never null.
-     */
-    String getOwner();
-
-    /**
-     * Get the type of item that is modelled.
-     * @return the modelled type, never null.
-     */
-    ValidationTarget getType();
-
-    /**
-     * Get the item's name, it should minimally describe the validation. 
Examples are:
-     * <pre>
-     *     Sections: a.b.c
-     *     Params: a.b.c.paramName
-     *     Filter: a.b.c.FilterImplClass
-     *     Dependency: mydepClassname
-     *     CombinationPolicy: a.b.c.MyCombinationPolicyClass
-     * </pre>
-     * @return the item's name.
-     */
-    String getName();
-
-    /**
-     * Check if this validation is a required one.
-     * @return true, if this validation is required.
-     */
-    boolean isRequired();
-
-    /**
-     * Get an description of the item, using the default locale. The 
description is basically optional
-     * though it is higly recommended to provide a description, so the 
validation issues is well
-     * resolvable.
-     *
-     * @return the description required, or null.
-     */
-    String getDescription();
-
-    /**
-     * Validates the item and all its children against the given configuration.
-     *
-     * @param config the configuration to be validated against, not null.
-     * @return the validation result, or null, if not applicable.
-     */
-    Collection<Validation> validate(Config config);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/f030e122/validation/src/main/java/org/apache/tamaya/validation/ValidationTarget.java
----------------------------------------------------------------------
diff --git 
a/validation/src/main/java/org/apache/tamaya/validation/ValidationTarget.java 
b/validation/src/main/java/org/apache/tamaya/validation/ValidationTarget.java
deleted file mode 100644
index 5a501e5..0000000
--- 
a/validation/src/main/java/org/apache/tamaya/validation/ValidationTarget.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.tamaya.validation;
-
-/**
- * This enumeration defines the types of supported validations.
- */
-public enum ValidationTarget {
-    /**
-     * A configuration section.
-     */
-    Section,
-    /**
-     * A configuration paramter.
-     */
-    Parameter,
-    /**
-     * ConfigModel that is a container of other validations.
-     */
-    Group,
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/f030e122/validation/src/main/java/org/apache/tamaya/validation/internal/ConfigValidationBean.java
----------------------------------------------------------------------
diff --git 
a/validation/src/main/java/org/apache/tamaya/validation/internal/ConfigValidationBean.java
 
b/validation/src/main/java/org/apache/tamaya/validation/internal/ConfigValidationBean.java
index 4f41d3e..fe677b3 100644
--- 
a/validation/src/main/java/org/apache/tamaya/validation/internal/ConfigValidationBean.java
+++ 
b/validation/src/main/java/org/apache/tamaya/validation/internal/ConfigValidationBean.java
@@ -18,10 +18,10 @@
  */
 package org.apache.tamaya.validation.internal;
 
-import org.apache.tamaya.validation.ValidationModel;
+import org.apache.tamaya.validation.ConfigValidation;
 import org.apache.tamaya.validation.ValidationManager;
-import org.apache.tamaya.validation.ValidationTarget;
-import org.apache.tamaya.validation.Validation;
+import org.apache.tamaya.validation.ConfigArea;
+import org.apache.tamaya.validation.ConfigValidationResult;
 import org.apache.tamaya.validation.spi.ConfigValidationMBean;
 
 import javax.config.Config;
@@ -36,7 +36,6 @@ import javax.json.JsonWriterFactory;
 import javax.json.stream.JsonGenerator;
 import java.io.StringWriter;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
@@ -49,9 +48,9 @@ public class ConfigValidationBean implements 
ConfigValidationMBean {
 
     private final JsonWriterFactory writerFactory;
 
-    private static final Comparator<Validation> COMPARATOR = new 
Comparator<Validation>() {
+    private static final Comparator<ConfigValidationResult> COMPARATOR = new 
Comparator<ConfigValidationResult>() {
         @Override
-        public int compare(Validation v1, Validation v2) {
+        public int compare(ConfigValidationResult v1, ConfigValidationResult 
v2) {
             int compare = VAL_COMPARATOR.compare(v1.getConfigModel(), 
v2.getConfigModel());
             if(compare==0){
                 compare = v1.getResult().compareTo(v2.getResult());
@@ -62,8 +61,8 @@ public class ConfigValidationBean implements 
ConfigValidationMBean {
             return compare;
         }
     };
-    private static final Comparator<ValidationModel> VAL_COMPARATOR = (v1, v2) 
-> {
-        int compare = v1.getType().compareTo(v2.getType());
+    private static final Comparator<ConfigValidation> VAL_COMPARATOR = (v1, 
v2) -> {
+        int compare = v1.getArea().compareTo(v2.getArea());
         if(compare==0){
             compare = v1.getName().compareTo(v2.getName());
         }
@@ -102,10 +101,10 @@ public class ConfigValidationBean implements 
ConfigValidationMBean {
 
     @Override
     public String validate(boolean showUndefined) {
-        List<Validation> validations = new 
ArrayList<>(ValidationManager.getInstance().validate(getConfig(), 
showUndefined));
+        List<ConfigValidationResult> validations = new 
ArrayList<>(ValidationManager.getInstance().validate(getConfig(), 
showUndefined));
         validations.sort(COMPARATOR);
         JsonArrayBuilder builder = Json.createArrayBuilder();
-        for(Validation val:validations){
+        for(ConfigValidationResult val:validations){
             builder.add(toJsonObject(val));
         }
         return formatJson(builder.build());
@@ -115,37 +114,37 @@ public class ConfigValidationBean implements 
ConfigValidationMBean {
 
     @Override
     public String getConfigurationModel() {
-        List<ValidationModel> configModels = new 
ArrayList<>(ValidationManager.getInstance().getModels());
+        List<ConfigValidation> configModels = new 
ArrayList<>(ValidationManager.getInstance().getModels());
         configModels.sort(VAL_COMPARATOR);
         JsonArrayBuilder result = Json.createArrayBuilder();
-        for(ValidationModel val: configModels){
+        for(ConfigValidation val: configModels){
             result.add(toJsonObject(val));
         }
         return formatJson(result.build());
     }
 
     @Override
-    public String getConfigurationModel(ValidationTarget type) {
+    public String getConfigurationModel(ConfigArea type) {
         return findValidationModels(".*", type);
     }
 
     @Override
     public String findConfigurationModels(String namePattern) {
-        List<ValidationModel> configModels = new 
ArrayList<>(ValidationManager.getInstance().findModels(namePattern));
+        List<ConfigValidation> configModels = new 
ArrayList<>(ValidationManager.getInstance().findModels(namePattern));
         configModels.sort(VAL_COMPARATOR);
         JsonArrayBuilder result = Json.createArrayBuilder();
-        for(ValidationModel val: configModels){
+        for(ConfigValidation val: configModels){
             result.add(toJsonObject(val));
         }
         return formatJson(result.build());
     }
 
     @Override
-    public String findValidationModels(String namePattern, ValidationTarget... 
type) {
-        List<ValidationModel> configModels = new 
ArrayList<>(ValidationManager.getInstance().findModels(namePattern, type));
+    public String findValidationModels(String namePattern, ConfigArea... type) 
{
+        List<ConfigValidation> configModels = new 
ArrayList<>(ValidationManager.getInstance().findModels(namePattern, type));
         configModels.sort(VAL_COMPARATOR);
         JsonArrayBuilder result = Json.createArrayBuilder();
-        for(ValidationModel val: configModels){
+        for(ConfigValidation val: configModels){
             result.add(toJsonObject(val));
         }
         return formatJson(result.build());
@@ -157,8 +156,8 @@ public class ConfigValidationBean implements 
ConfigValidationMBean {
     }
 
 
-    private JsonObject toJsonObject(ValidationModel val) {
-        JsonObjectBuilder valJson = Json.createObjectBuilder().add("target", 
val.getType().toString())
+    private JsonObject toJsonObject(ConfigValidation val) {
+        JsonObjectBuilder valJson = Json.createObjectBuilder().add("target", 
val.getArea().toString())
                 .add("name", val.getName());
         if(val.getDescription()!=null) {
             valJson.add("description", val.getDescription());
@@ -169,8 +168,8 @@ public class ConfigValidationBean implements 
ConfigValidationMBean {
         return valJson.build();
     }
 
-    private JsonObject toJsonObject(Validation val) {
-        JsonObjectBuilder valJson = Json.createObjectBuilder().add("target", 
val.getConfigModel().getType().toString())
+    private JsonObject toJsonObject(ConfigValidationResult val) {
+        JsonObjectBuilder valJson = Json.createObjectBuilder().add("target", 
val.getConfigModel().getArea().toString())
                 .add("name", val.getConfigModel().getName());
         if(val.getConfigModel().isRequired()){
             valJson.add("required",true);

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/f030e122/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredInlineModelProviderSpi.java
----------------------------------------------------------------------
diff --git 
a/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredInlineModelProviderSpi.java
 
b/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredInlineModelProviderSpi.java
index 097030b..af793b5 100644
--- 
a/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredInlineModelProviderSpi.java
+++ 
b/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredInlineModelProviderSpi.java
@@ -19,9 +19,9 @@
 package org.apache.tamaya.validation.internal;
 
 import org.apache.tamaya.functions.ConfigurationFunctions;
-import org.apache.tamaya.validation.ValidationModel;
+import org.apache.tamaya.validation.ConfigValidation;
 import org.apache.tamaya.validation.spi.ConfigValidationReader;
-import org.apache.tamaya.validation.spi.ValidationModelProviderSpi;
+import org.apache.tamaya.validation.spi.ConfigValidationProviderSpi;
 
 import javax.config.Config;
 import javax.config.ConfigProvider;
@@ -31,7 +31,7 @@ import java.util.logging.Logger;
 /**
  * ConfigModel provider that reads model metadata from the current {@link 
Config}.
  */
-public class ConfiguredInlineModelProviderSpi implements 
ValidationModelProviderSpi {
+public class ConfiguredInlineModelProviderSpi implements 
ConfigValidationProviderSpi {
 
     /** The logger. */
     private static final Logger LOG = 
Logger.getLogger(ConfiguredInlineModelProviderSpi.class.getName());
@@ -39,7 +39,7 @@ public class ConfiguredInlineModelProviderSpi implements 
ValidationModelProvider
     private static final String MODEL_EANABLED_PARAM = 
"org.apache.tamaya.validation.integrated.enabled";
 
     /** The configModels read. */
-    private List<ValidationModel> configModels = new ArrayList<>();
+    private List<ConfigValidation> configModels = new ArrayList<>();
 
 
     /**
@@ -59,7 +59,7 @@ public class ConfiguredInlineModelProviderSpi implements 
ValidationModelProvider
     }
 
 
-    public Collection<ValidationModel> getConfigModels() {
+    public Collection<ConfigValidation> getConfigValidations() {
         return configModels;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/f030e122/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredPropertiesModelProviderSpi.java
----------------------------------------------------------------------
diff --git 
a/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredPropertiesModelProviderSpi.java
 
b/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredPropertiesModelProviderSpi.java
index 0b7df20..09c5389 100644
--- 
a/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredPropertiesModelProviderSpi.java
+++ 
b/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredPropertiesModelProviderSpi.java
@@ -19,9 +19,9 @@
 package org.apache.tamaya.validation.internal;
 
 import org.apache.tamaya.base.configsource.MapConfigSource;
-import org.apache.tamaya.validation.ValidationModel;
+import org.apache.tamaya.validation.ConfigValidation;
 import org.apache.tamaya.validation.spi.ConfigValidationReader;
-import org.apache.tamaya.validation.spi.ValidationModelProviderSpi;
+import org.apache.tamaya.validation.spi.ConfigValidationProviderSpi;
 
 import javax.config.ConfigProvider;
 import java.io.InputStream;
@@ -104,14 +104,14 @@ import java.util.logging.Logger;
  * 
{model}a.b.c.aValidatedSection.configModels=org.apache.tamaya.model.TestValidator
  * </pre>
  */
-public class ConfiguredPropertiesModelProviderSpi implements 
ValidationModelProviderSpi {
+public class ConfiguredPropertiesModelProviderSpi implements 
ConfigValidationProviderSpi {
 
     /** The logger. */
     private static final Logger LOG = 
Logger.getLogger(ConfiguredPropertiesModelProviderSpi.class.getName());
     /** parameter to disable this provider. By default the provider is active. 
*/
     private static final String MODEL_EANABLED_PARAM = 
"org.apache.tamaya.validation.default.enabled";
     /** The configModels read. */
-    private List<ValidationModel> configModels = new ArrayList<>();
+    private List<ConfigValidation> configModels = new ArrayList<>();
 
     public ConfiguredPropertiesModelProviderSpi() {
         Optional<String> enabledVal = 
ConfigProvider.getConfig().getOptionalValue(MODEL_EANABLED_PARAM, String.class);
@@ -148,7 +148,7 @@ public class ConfiguredPropertiesModelProviderSpi 
implements ValidationModelProv
     }
 
 
-    public Collection<ValidationModel> getConfigModels() {
+    public Collection<ConfigValidation> getConfigValidations() {
         return configModels;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/f030e122/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredResourcesModelProviderSpi.java
----------------------------------------------------------------------
diff --git 
a/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredResourcesModelProviderSpi.java
 
b/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredResourcesModelProviderSpi.java
index 9d871d0..df94530 100644
--- 
a/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredResourcesModelProviderSpi.java
+++ 
b/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredResourcesModelProviderSpi.java
@@ -27,9 +27,9 @@ import java.util.logging.Logger;
 
 import org.apache.tamaya.format.ConfigurationData;
 import org.apache.tamaya.format.ConfigurationFormats;
-import org.apache.tamaya.validation.ValidationModel;
+import org.apache.tamaya.validation.ConfigValidation;
 import org.apache.tamaya.validation.spi.ConfigValidationReader;
-import org.apache.tamaya.validation.spi.ValidationModelProviderSpi;
+import org.apache.tamaya.validation.spi.ConfigValidationProviderSpi;
 import org.apache.tamaya.resource.ConfigResources;
 
 import javax.config.ConfigProvider;
@@ -44,7 +44,7 @@ import javax.config.ConfigProvider;
  *  key value pairs within a map are separated by a colon.
  * </pre>
  */
-public class ConfiguredResourcesModelProviderSpi implements 
ValidationModelProviderSpi {
+public class ConfiguredResourcesModelProviderSpi implements 
ConfigValidationProviderSpi {
 
     /**
      * The logger.
@@ -74,7 +74,7 @@ public class ConfiguredResourcesModelProviderSpi implements 
ValidationModelProvi
     /**
      * The configModels read.
      */
-    private List<ValidationModel> configModels = new ArrayList<>();
+    private List<ConfigValidation> configModels = new ArrayList<>();
 
     /**
      * Initializes the flag showing if the formats module is present 
(required).
@@ -155,7 +155,7 @@ public class ConfiguredResourcesModelProviderSpi implements 
ValidationModelProvi
 
 
     @Override
-    public Collection<ValidationModel> getConfigModels() {
+    public Collection<ConfigValidation> getConfigValidations() {
         return configModels;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/f030e122/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredTypeEventsModelPopulator.java
----------------------------------------------------------------------
diff --git 
a/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredTypeEventsModelPopulator.java
 
b/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredTypeEventsModelPopulator.java
index 74afcc9..8056e09 100644
--- 
a/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredTypeEventsModelPopulator.java
+++ 
b/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredTypeEventsModelPopulator.java
@@ -24,14 +24,14 @@ import org.apache.tamaya.inject.spi.ConfiguredField;
 import org.apache.tamaya.inject.spi.ConfiguredMethod;
 import org.apache.tamaya.inject.spi.ConfiguredType;
 import org.apache.tamaya.validation.ValidationManager;
-import org.apache.tamaya.validation.ValidationModel;
-import org.apache.tamaya.validation.spi.ValidateParameter;
+import org.apache.tamaya.validation.ConfigValidation;
+import org.apache.tamaya.validation.spi.ValidatedParameter;
 
 import java.util.Collection;
 import java.util.logging.Logger;
 
 /**
- * Internal facade that registers all kind of injected fields as {@link 
ValidationModel} entries,
+ * Internal facade that registers all kind of injected fields as {@link 
ConfigValidation} entries,
  * so all configured injection points are visible as documented configuration 
hooks.
  */
 public final class ConfiguredTypeEventsModelPopulator implements 
ConfigEventListener {
@@ -57,10 +57,10 @@ public final class ConfiguredTypeEventsModelPopulator 
implements ConfigEventList
             for (ConfiguredField field : confType.getConfiguredFields()) {
                 Collection<String> keys = field.getConfiguredKeys();
                 for (String key : keys) {
-                    ValidateParameter val = 
ValidationManager.getInstance().getModel(key, ValidateParameter.class);
+                    ValidatedParameter val = 
ValidationManager.getInstance().getModel(key, ValidatedParameter.class);
                     if (val == null) {
                         ConfiguredTypeEventsModelProvider.addConfigModel(
-                                new 
ValidateParameter.Builder(confType.getName(), key)
+                                new 
ValidatedParameter.Builder(confType.getName(), key)
                                 .setType(field.getType().getName())
                                 .setDescription("Injected field: " +
                                         
field.getAnnotatedField().getDeclaringClass().getName() + '.' + 
field.toString() +
@@ -72,10 +72,10 @@ public final class ConfiguredTypeEventsModelPopulator 
implements ConfigEventList
             for (ConfiguredMethod method : confType.getConfiguredMethods()) {
                 Collection<String> keys = method.getConfiguredKeys();
                 for (String key : keys) {
-                    ValidateParameter val = 
ValidationManager.getInstance().getModel(key, ValidateParameter.class);
+                    ValidatedParameter val = 
ValidationManager.getInstance().getModel(key, ValidatedParameter.class);
                     if (val == null) {
                         ConfiguredTypeEventsModelProvider.addConfigModel(
-                                new 
ValidateParameter.Builder(confType.getName(), key)
+                                new 
ValidatedParameter.Builder(confType.getName(), key)
                                 
.setType(method.getParameterTypes()[0].getName())
                                 .setDescription("Injected field: " +
                                         
method.getAnnotatedMethod().getDeclaringClass().getName() + '.' + 
method.toString() +

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/f030e122/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredTypeEventsModelProvider.java
----------------------------------------------------------------------
diff --git 
a/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredTypeEventsModelProvider.java
 
b/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredTypeEventsModelProvider.java
index e11e97a..40b6fa4 100644
--- 
a/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredTypeEventsModelProvider.java
+++ 
b/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredTypeEventsModelProvider.java
@@ -18,8 +18,8 @@
  */
 package org.apache.tamaya.validation.internal;
 
-import org.apache.tamaya.validation.ValidationModel;
-import org.apache.tamaya.validation.spi.ValidationModelProviderSpi;
+import org.apache.tamaya.validation.ConfigValidation;
+import org.apache.tamaya.validation.spi.ConfigValidationProviderSpi;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -30,22 +30,22 @@ import java.util.List;
  * Model provider that adds model definitions for the items published as
  * {@link org.apache.tamaya.inject.spi.ConfiguredType} events.
  */
-public class ConfiguredTypeEventsModelProvider implements 
ValidationModelProviderSpi {
+public class ConfiguredTypeEventsModelProvider implements 
ConfigValidationProviderSpi {
     /** The collected models. */
-    private static Collection<ValidationModel> configModels = new 
ArrayList<>();
+    private static Collection<ConfigValidation> configModels = new 
ArrayList<>();
 
     /**
      * Adds a model, called from the registered listener class.
      * @param configModel adds the config model.
      */
-    static void addConfigModel(ValidationModel configModel){
-        List<ValidationModel> newList = new ArrayList<>(configModels);
+    static void addConfigModel(ConfigValidation configModel){
+        List<ConfigValidation> newList = new ArrayList<>(configModels);
         newList.add(configModel);
         ConfiguredTypeEventsModelProvider.configModels = newList;
     }
 
     @Override
-    public Collection<ValidationModel> getConfigModels() {
+    public Collection<ConfigValidation> getConfigValidations() {
         return Collections.unmodifiableCollection(configModels);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/f030e122/validation/src/main/java/org/apache/tamaya/validation/spi/AbstractConfigModel.java
----------------------------------------------------------------------
diff --git 
a/validation/src/main/java/org/apache/tamaya/validation/spi/AbstractConfigModel.java
 
b/validation/src/main/java/org/apache/tamaya/validation/spi/AbstractConfigModel.java
deleted file mode 100644
index 7f12753..0000000
--- 
a/validation/src/main/java/org/apache/tamaya/validation/spi/AbstractConfigModel.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.tamaya.validation.spi;
-
-import org.apache.tamaya.validation.ValidationModel;
-
-import java.util.Objects;
-
-/**
- * Default configuration Model for a configuration area.
- */
-public abstract class AbstractConfigModel implements ValidationModel, 
Comparable<ValidationModel> {
-    private final String owner;
-    private final String name;
-    private final String description;
-    private boolean required = false;
-
-
-    protected AbstractConfigModel(String owner, String name, boolean required, 
String description) {
-        this.name = Objects.requireNonNull(name);
-        this.owner = Objects.requireNonNull(owner);
-        this.description = description;
-        this.required = required;
-    }
-
-    @Override
-    public String getOwner() {
-        return owner;
-    }
-
-    @Override
-    public String getName() {
-        return name;
-    }
-
-    @Override
-    public String getDescription() {
-        return description;
-    }
-
-    @Override
-    public boolean isRequired() {
-        return required;
-    }
-
-    @Override
-    public int compareTo(ValidationModel configModel) {
-        int compare = getType().compareTo(configModel.getType());
-        if (compare != 0) {
-            return compare;
-        }
-        return getName().compareTo(configModel.getName());
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        AbstractConfigModel that = (AbstractConfigModel) o;
-        return getType().equals(that.getType()) && name.equals(that.name);
-
-    }
-
-    @Override
-    public int hashCode() {
-        return getType().hashCode() + name.hashCode();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/f030e122/validation/src/main/java/org/apache/tamaya/validation/spi/AbstractConfigValidation.java
----------------------------------------------------------------------
diff --git 
a/validation/src/main/java/org/apache/tamaya/validation/spi/AbstractConfigValidation.java
 
b/validation/src/main/java/org/apache/tamaya/validation/spi/AbstractConfigValidation.java
new file mode 100644
index 0000000..23e7c35
--- /dev/null
+++ 
b/validation/src/main/java/org/apache/tamaya/validation/spi/AbstractConfigValidation.java
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.tamaya.validation.spi;
+
+import org.apache.tamaya.validation.ConfigValidation;
+
+import java.util.Objects;
+
+/**
+ * Default configuration Model for a configuration area.
+ */
+public abstract class AbstractConfigValidation implements ConfigValidation, 
Comparable<ConfigValidation> {
+    private final String owner;
+    private final String name;
+    private final String description;
+    private boolean required = false;
+
+
+    protected AbstractConfigValidation(String owner, String name, boolean 
required, String description) {
+        this.name = Objects.requireNonNull(name);
+        this.owner = Objects.requireNonNull(owner);
+        this.description = description;
+        this.required = required;
+    }
+
+    @Override
+    public String getOwner() {
+        return owner;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    @Override
+    public String getDescription() {
+        return description;
+    }
+
+    @Override
+    public boolean isRequired() {
+        return required;
+    }
+
+    @Override
+    public int compareTo(ConfigValidation configModel) {
+        int compare = getArea().compareTo(configModel.getArea());
+        if (compare != 0) {
+            return compare;
+        }
+        return getName().compareTo(configModel.getName());
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+        AbstractConfigValidation that = (AbstractConfigValidation) o;
+        return getArea().equals(that.getArea()) && name.equals(that.name);
+
+    }
+
+    @Override
+    public int hashCode() {
+        return getArea().hashCode() + name.hashCode();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/f030e122/validation/src/main/java/org/apache/tamaya/validation/spi/ConfigValidationMBean.java
----------------------------------------------------------------------
diff --git 
a/validation/src/main/java/org/apache/tamaya/validation/spi/ConfigValidationMBean.java
 
b/validation/src/main/java/org/apache/tamaya/validation/spi/ConfigValidationMBean.java
index fc01e61..9fd3f11 100644
--- 
a/validation/src/main/java/org/apache/tamaya/validation/spi/ConfigValidationMBean.java
+++ 
b/validation/src/main/java/org/apache/tamaya/validation/spi/ConfigValidationMBean.java
@@ -18,7 +18,7 @@
  */
 package org.apache.tamaya.validation.spi;
 
-import org.apache.tamaya.validation.ValidationTarget;
+import org.apache.tamaya.validation.ConfigArea;
 
 /**
  * JMX Management bean for accessing current configuration information
@@ -34,7 +34,7 @@ public interface ConfigValidationMBean {
 
     String getConfigurationModel();
 
-    String getConfigurationModel(ValidationTarget type);
+    String getConfigurationModel(ConfigArea type);
 
     /**
      * Find the validations by checking the validation's name using the given 
regular expression.
@@ -49,5 +49,5 @@ public interface ConfigValidationMBean {
      * @param namePattern the regular expression to use, not null.
      * @return the sections defined, never null.
      */
-    String findValidationModels(String namePattern, ValidationTarget... type);
+    String findValidationModels(String namePattern, ConfigArea... type);
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/f030e122/validation/src/main/java/org/apache/tamaya/validation/spi/ConfigValidationProviderSpi.java
----------------------------------------------------------------------
diff --git 
a/validation/src/main/java/org/apache/tamaya/validation/spi/ConfigValidationProviderSpi.java
 
b/validation/src/main/java/org/apache/tamaya/validation/spi/ConfigValidationProviderSpi.java
new file mode 100644
index 0000000..71a42ba
--- /dev/null
+++ 
b/validation/src/main/java/org/apache/tamaya/validation/spi/ConfigValidationProviderSpi.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.tamaya.validation.spi;
+
+import org.apache.tamaya.validation.ConfigValidation;
+
+import java.util.Collection;
+
+/**
+ * Model of a configuration state. A model can be a full model, or a partial 
model, validating only
+ * a configuration subset. This allows better user feedback because big 
configurations can be grouped
+ * and validated by multiple (partial) models.
+ */
+public interface ConfigValidationProviderSpi {
+
+    /**
+     * Get the validation defined.
+     *
+     * @return the sections defined, never null.
+     */
+    Collection<ConfigValidation> getConfigValidations();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/f030e122/validation/src/main/java/org/apache/tamaya/validation/spi/ConfigValidationReader.java
----------------------------------------------------------------------
diff --git 
a/validation/src/main/java/org/apache/tamaya/validation/spi/ConfigValidationReader.java
 
b/validation/src/main/java/org/apache/tamaya/validation/spi/ConfigValidationReader.java
index 2938a3e..d32251d 100644
--- 
a/validation/src/main/java/org/apache/tamaya/validation/spi/ConfigValidationReader.java
+++ 
b/validation/src/main/java/org/apache/tamaya/validation/spi/ConfigValidationReader.java
@@ -20,7 +20,7 @@ package org.apache.tamaya.validation.spi;
 
 import java.util.*;
 
-import org.apache.tamaya.validation.ValidationModel;
+import org.apache.tamaya.validation.ConfigValidation;
 
 /**
  * Utility class to read metamodel information from properties. Hereby these 
properties can be part of a
@@ -44,8 +44,8 @@ public final class ConfigValidationReader {
      * @param props the properties to be read
      * @return a collection of config validations.
      */
-    public static Collection<ValidationModel> loadValidations(String owner, 
Map<String,String> props) {
-        List<ValidationModel> result = new ArrayList<>();
+    public static Collection<ConfigValidation> loadValidations(String owner, 
Map<String,String> props) {
+        List<ConfigValidation> result = new ArrayList<>();
         Set<String> itemKeys = new HashSet<>();
         for (String key : props.keySet()) {
             if (key.startsWith("_") &&
@@ -96,10 +96,10 @@ public final class ConfigValidationReader {
      * @param validations the optional custom validations to be performed.
      * @return the new validation for this parameter.
      */
-    private static ValidationModel validateParameter(String owner, String 
paramName, String description, String type, String reqVal,
-                                                     String regEx, String 
validations) {
+    private static ConfigValidation validateParameter(String owner, String 
paramName, String description, String type, String reqVal,
+                                                      String regEx, String 
validations) {
         boolean required = "true".equalsIgnoreCase(reqVal);
-        ValidateParameter.Builder builder = ValidateParameter.builder(owner, 
paramName).setRequired(required)
+        ValidatedParameter.Builder builder = ValidatedParameter.builder(owner, 
paramName).setRequired(required)
                 .setDescription(description).setExpression(regEx);
         if(type!=null) {
             builder.setType(type);
@@ -118,10 +118,10 @@ public final class ConfigValidationReader {
      * @param validations the optional custom validations to be performed.
      * @return the new validation for this section.
      */
-    private static ValidationModel validateSection(String owner, String 
sectionName, String description, String reqVal,
-                                                   String validations) {
+    private static ConfigValidation validateSection(String owner, String 
sectionName, String description, String reqVal,
+                                                    String validations) {
         boolean required = "true".equalsIgnoreCase(reqVal);
-        ValidateSection.Builder builder = ValidateSection.builder(owner, 
sectionName).setRequired(required)
+        ValidatedSection.Builder builder = ValidatedSection.builder(owner, 
sectionName).setRequired(required)
                 .setDescription(description);
         //        if(validations!=null) {
 //            builder.setValidations(validations);

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/f030e122/validation/src/main/java/org/apache/tamaya/validation/spi/ValidateGroup.java
----------------------------------------------------------------------
diff --git 
a/validation/src/main/java/org/apache/tamaya/validation/spi/ValidateGroup.java 
b/validation/src/main/java/org/apache/tamaya/validation/spi/ValidateGroup.java
deleted file mode 100644
index 6b7634c..0000000
--- 
a/validation/src/main/java/org/apache/tamaya/validation/spi/ValidateGroup.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.tamaya.validation.spi;
-
-import org.apache.tamaya.validation.ValidationModel;
-import org.apache.tamaya.validation.ValidationTarget;
-import org.apache.tamaya.validation.Validation;
-
-import javax.config.Config;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
-
-/**
- * Default configuration Model for a configuration area.
- */
-public class ValidateGroup implements ValidationModel {
-
-    private final String owner;
-    private final String name;
-    private boolean required;
-    private List<ValidationModel> childModels = new ArrayList<>();
-
-    public ValidateGroup(String owner, String name, ValidationModel... 
configModels){
-        this(owner, name, Arrays.asList(configModels));
-    }
-
-    public ValidateGroup(String owner, String name, 
Collection<ValidationModel> configModels){
-        this.owner = Objects.requireNonNull(owner);
-        this.name = Objects.requireNonNull(name);
-        this.childModels.addAll(configModels);
-        this.childModels = Collections.unmodifiableList(childModels);
-        for(ValidationModel val: configModels) {
-            if(val.isRequired()){
-                this.required = true;
-                break;
-            }
-        }
-    }
-
-    @Override
-    public String getOwner() {
-        return owner;
-    }
-
-    @Override
-    public String getName() {
-        return name;
-    }
-
-    @Override
-    public boolean isRequired() {
-        return required;
-    }
-
-    @Override
-    public ValidationTarget getType() {
-        return ValidationTarget.Group;
-    }
-
-    @Override
-    public String getDescription() {
-        if(childModels.isEmpty()){
-            return null;
-        }
-        StringBuilder b = new StringBuilder();
-        for(ValidationModel val: childModels){
-            b.append("  >> ").append(val);
-        }
-        return b.toString();
-    }
-
-    public Collection<ValidationModel> getValidations(){
-        return childModels;
-    }
-
-    @Override
-    public Collection<Validation> validate(Config config) {
-        List<Validation> result = new ArrayList<>(1);
-        for(ValidationModel child: childModels){
-            result.addAll(child.validate(config));
-        }
-        return result;
-    }
-
-    @Override
-    public String toString(){
-        return String.valueOf(getType()) + ", size: " + childModels.size() + 
": " + getDescription();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/f030e122/validation/src/main/java/org/apache/tamaya/validation/spi/ValidateParameter.java
----------------------------------------------------------------------
diff --git 
a/validation/src/main/java/org/apache/tamaya/validation/spi/ValidateParameter.java
 
b/validation/src/main/java/org/apache/tamaya/validation/spi/ValidateParameter.java
deleted file mode 100644
index 5d598f1..0000000
--- 
a/validation/src/main/java/org/apache/tamaya/validation/spi/ValidateParameter.java
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.tamaya.validation.spi;
-
-import org.apache.tamaya.validation.ValidationModel;
-import org.apache.tamaya.validation.ValidationTarget;
-import org.apache.tamaya.validation.Validation;
-
-import javax.config.Config;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Objects;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-/**
- * Default configuration Model for a configuration parameter.
- */
-public class ValidateParameter extends AbstractConfigModel {
-    /** Optional regular expression for validating the value. */
-    private final String regEx;
-    /** The target type into which the value must be convertible. */
-    private final Class<?> type;
-
-    /**
-     * Internal constructor.
-     * @param builder the builder, not null.
-     */
-    protected ValidateParameter(Builder builder) {
-        super(builder.owner, builder.name, builder.required, 
builder.description);
-        this.regEx = builder.regEx;
-        this.type = builder.type;
-    }
-
-    @Override
-    public ValidationTarget getType() {
-        return ValidationTarget.Parameter;
-    }
-
-    /**
-     * Get the required parameter type.
-     *
-     * @return the type.
-     */
-    public Class<?> getParameterType() {
-        return type;
-    }
-
-    @Override
-    public Collection<Validation> validate(Config config) {
-        List<Validation> result = new ArrayList<>(1);
-        String configValue = config.getValue(getName(), String.class);
-        if (configValue == null && isRequired()) {
-            result.add(Validation.checkMissing(this));
-        }
-        if (configValue != null && regEx != null) {
-            if (!configValue.matches(regEx)) {
-                result.add(Validation.checkError(this, "Config value not 
matching expression: " + regEx + ", was " +
-                        configValue));
-            }
-        }
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        StringBuilder b = new StringBuilder();
-        b.append(getType()).append(": ").append(getName());
-        if (isRequired()) {
-            b.append(", required: ").append(isRequired());
-        }
-        if (regEx != null) {
-            b.append(", expression: ").append(regEx);
-        }
-        return b.toString();
-    }
-
-    /**
-     * Creates a new Builder instance.
-     * @param owner the owner name, not null.
-     * @param name the fully qualified parameter name.
-     * @return a new builder, never null.
-     */
-    public static Builder builder(String owner, String name) {
-        return new Builder(owner, name);
-    }
-
-    /**
-     * Creates a new ConfigModel
-     * @param owner the owner name, not null.
-     * @param name the fully qualified parameter name.
-     * @param required the required flag.
-     * @param expression an optional regular expression to validate a value.
-     * @return the new ConfigModel instance.
-     */
-    public static ValidationModel of(String owner, String name, boolean 
required, String expression) {
-        return new Builder(owner, 
name).setRequired(required).setExpression(expression).build();
-    }
-
-    /**
-     * Creates a new ConfigModel
-     * @param owner the owner name, not null.
-     * @param name the fully qualified parameter name.
-     * @param required the required flag.
-     * @return the new ConfigModel instance.
-     */
-    public static ValidationModel of(String owner, String name, boolean 
required) {
-        return new Builder(owner, name).setRequired(required).build();
-    }
-
-    /**
-     * Creates a new ConfigModel. The parameter will be defined as optional.
-     * @param owner the owner name, not null.
-     * @param name the fully qualified parameter name.
-     * @return the new ConfigModel instance.
-     */
-    public static ValidationModel of(String owner, String name) {
-        return new Builder(owner, name).setRequired(false).build();
-    }
-
-
-    /**
-     * A new Builder for creating ParameterModel instances.
-     */
-    public static class Builder {
-        /** The parameter's target type. */
-        private Class<?> type;
-        /** The owner. */
-        private String owner;
-        /** The fully qualified parameter name. */
-        private String name;
-        /** The optional validation expression. */
-        private String regEx;
-        /** The optional description. */
-        private String description;
-        /** The required flag. */
-        private boolean required;
-
-        /**
-         * Creates a new Builder.
-         * @param owner owner, not null.
-         * @param name the fully qualified parameter name, not null.
-         */
-        public Builder(String owner, String name) {
-            this.owner = Objects.requireNonNull(owner);
-            this.name = Objects.requireNonNull(name);
-        }
-
-        /**
-         * Sets the target type.
-         * @param type the type, not null.
-         * @return the Builder for chaining
-         */
-        public Builder setType(String type) {
-            try {
-                this.type = Class.forName(type);
-            } catch (ClassNotFoundException e) {
-                try {
-                    this.type = Class.forName("java.lang."+type);
-                } catch (ClassNotFoundException e2) {
-                    Logger.getLogger(getClass().getName()).log(Level.INFO, 
"Failed to load parameter type: " + type, e2);
-                }
-            }
-            return this;
-        }
-
-        /**
-         * Sets the required flag.
-         * @param required the required flag.
-         * @return the Builder for chaining
-         */
-        public Builder setRequired(boolean required) {
-            this.required = required;
-            return this;
-        }
-
-        /**
-         * Sets the optional description
-         * @param description the description
-         * @return the Builder for chaining
-         */
-        public Builder setDescription(String description) {
-            this.description = description;
-            return this;
-        }
-
-        /**
-         * Sets the optional validation expression
-         * @param expression the validation expression
-         * @return the Builder for chaining
-         */
-        public Builder setExpression(String expression) {
-            this.regEx = expression;
-            return this;
-        }
-
-        /**
-         * Sets the owner name.
-         * @param owner the owner name, not null.
-         * @return the Builder for chaining
-         */
-        public Builder setOwner(String owner) {
-            this.owner = Objects.requireNonNull(owner);
-            return this;
-        }
-
-        /**
-         * Sets the fully qualified parameter name.
-         * @param name the fully qualified parameter name, not null.
-         * @return the Builder for chaining
-         */
-        public Builder setName(String name) {
-            this.name = Objects.requireNonNull(name);
-            return this;
-        }
-
-        /**
-         * Creates a new ConfigModel with the given parameters.
-         * @return a new ConfigModel , never null.
-         */
-        public ValidationModel build() {
-            return new ValidateParameter(this);
-        }
-    }
-}

Reply via email to