You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tamaya.apache.org by an...@apache.org on 2018/02/05 19:04:15 UTC
[2/2] incubator-tamaya-sandbox git commit: Renamed some classes.
Renamed some classes.
Signed-off-by: Anatole Tresch <an...@apache.org>
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 <an...@apache.org>
Authored: Mon Feb 5 20:04:05 2018 +0100
Committer: Anatole Tresch <an...@apache.org>
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);
- }
- }
-}