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/01/14 21:21:12 UTC
[2/3] incubator-tamaya-sandbox git commit: Adapted to comply with JSR
API.
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/54b627b9/validation/src/main/java/org/apache/tamaya/validation/spi/ConfigDocumentationMBean.java
----------------------------------------------------------------------
diff --git a/validation/src/main/java/org/apache/tamaya/validation/spi/ConfigDocumentationMBean.java b/validation/src/main/java/org/apache/tamaya/validation/spi/ConfigDocumentationMBean.java
deleted file mode 100644
index dbacaa2..0000000
--- a/validation/src/main/java/org/apache/tamaya/validation/spi/ConfigDocumentationMBean.java
+++ /dev/null
@@ -1,53 +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.ModelTarget;
-
-/**
- * JMX Management bean for accessing current configuration information
- */
-public interface ConfigDocumentationMBean {
- /**
- * Validates the configuration for the given context.
- *
- * @param showUndefined allows filtering for undefined configuration elements.
- * @return the validation results, never null.
- */
- String validate(boolean showUndefined);
-
- String getConfigurationModel();
-
- String getConfigurationModel(ModelTarget type);
-
- /**
- * Find the validations by checking the validation's name using the given regular expression.
- * @param namePattern the regular expression to use, not null.
- * @return the sections defined, never null.
- */
- String findConfigurationModels(String namePattern);
-
- /**
- * Find the validations by checking the validation's name using the given regular expression.
- * @param type the target ModelTypes (optional), not null.
- * @param namePattern the regular expression to use, not null.
- * @return the sections defined, never null.
- */
- String findValidationModels(String namePattern, ModelTarget... type);
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/54b627b9/validation/src/main/java/org/apache/tamaya/validation/spi/ConfigModelReader.java
----------------------------------------------------------------------
diff --git a/validation/src/main/java/org/apache/tamaya/validation/spi/ConfigModelReader.java b/validation/src/main/java/org/apache/tamaya/validation/spi/ConfigModelReader.java
deleted file mode 100644
index d730060..0000000
--- a/validation/src/main/java/org/apache/tamaya/validation/spi/ConfigModelReader.java
+++ /dev/null
@@ -1,142 +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 java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.tamaya.validation.ConfigModel;
-
-/**
- * Utility class to read metamodel information from properties. Hereby these properties can be part of a
- * configuration (containing other entriees as well) or be dedicated model definition properties read
- * from any kind of source.
- */
-public final class ConfigModelReader {
-
- /** The default model entries selector. */
- private static final String DEFAULT_META_INFO_SELECTOR = ".model";
-
- /**
- * Utility class only.
- */
- private ConfigModelReader(){}
-
-
- /**
- * Loads validations as configured in the given properties.
- * @param owner owner, not null.
- * @param props the properties to be read
- * @return a collection of config validations.
- */
- public static Collection<ConfigModel> loadValidations(String owner, Map<String,String> props) {
- List<ConfigModel> result = new ArrayList<>();
- Set<String> itemKeys = new HashSet<>();
- for (Object key : props.keySet()) {
- if (key.toString().startsWith("_") &&
- key.toString().endsWith(DEFAULT_META_INFO_SELECTOR + ".target")) {
- itemKeys.add(key.toString().substring(0, key.toString().length() - ".model.target".length()));
- }
- }
- for (String baseKey : itemKeys) {
- String target = props.get(baseKey + ".model.target");
- String type = props.get(baseKey + ".model.type");
- if (type == null) {
- type = String.class.getName();
- }
- String value = props.get(baseKey + ".model.transitive");
- boolean transitive = false;
- if(value!=null) {
- transitive = Boolean.parseBoolean(value);
- }
- String description = props.get(baseKey + ".model.description");
- String regEx = props.get(baseKey + ".model.expression");
- String validations = props.get(baseKey + ".model.validations");
- String requiredVal = props.get(baseKey + ".model.required");
- String targetKey = baseKey.substring(1);
- if ("Parameter".equalsIgnoreCase(target)) {
- result.add(createParameterValidation(owner, targetKey,
- description, type, requiredVal, regEx, validations));
- } else if ("Section".equalsIgnoreCase(target)) {
- if(transitive){
- result.add(createSectionValidation(owner, targetKey+".*",
- description, requiredVal, validations));
- } else {
- result.add(createSectionValidation(owner, targetKey,
- description, requiredVal, validations));
- }
- }
- }
- return result;
- }
-
- /**
- * Creates a parameter validation.
- * @param paramName the param name, not null.
- * @param description the optional description
- * @param type the param type, default is String.
- * @param reqVal the required value, default is 'false'.
- * @param regEx an optional regular expression to be checked for this param
- * @param validations the optional custom validations to be performed.
- * @return the new validation for this parameter.
- */
- private static ConfigModel createParameterValidation(String owner, String paramName, String description, String type, String reqVal,
- String regEx, String validations) {
- boolean required = "true".equalsIgnoreCase(reqVal);
- ParameterModel.Builder builder = ParameterModel.builder(owner, paramName).setRequired(required)
- .setDescription(description).setExpression(regEx).setType(type);
-// if (validations != null) {
-// try {
-// // TODO define validator API
-//// builder.addValidations(loadValidations(validations));
-// } catch (Exception e) {
-// LOGGER.log(Level.WARNING, "Failed to load validations for " + paramName, e);
-// }
-// }
- return builder.build();
- }
-
- /**
- * Creates a section validation.
- * @param sectionName the section's name, not null.
- * @param description the optional description
- * @param reqVal the required value, default is 'false'.
- * @param validations the optional custom validations to be performed.
- * @return the new validation for this section.
- */
- private static ConfigModel createSectionValidation(String owner, String sectionName, String description, String reqVal,
- String validations) {
- boolean required = "true".equalsIgnoreCase(reqVal);
- SectionModel.Builder builder = SectionModel.builder(owner, sectionName).setRequired(required)
- .setDescription(description);
-// if (validations != null) {
-// try {
-// // TODO define validator API
-//// builder.addValidations(loadValidations(valiadtions));
-// } catch (Exception e) {
-// LOGGER.log(Level.WARNING, "Failed to load validations for " + sectionName, e);
-// }
-// }
- return builder.build();
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/54b627b9/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
new file mode 100644
index 0000000..fc01e61
--- /dev/null
+++ b/validation/src/main/java/org/apache/tamaya/validation/spi/ConfigValidationMBean.java
@@ -0,0 +1,53 @@
+/*
+ * 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.ValidationTarget;
+
+/**
+ * JMX Management bean for accessing current configuration information
+ */
+public interface ConfigValidationMBean {
+ /**
+ * Validates the configuration for the given context.
+ *
+ * @param showUndefined allows filtering for undefined configuration elements.
+ * @return the validation results, never null.
+ */
+ String validate(boolean showUndefined);
+
+ String getConfigurationModel();
+
+ String getConfigurationModel(ValidationTarget type);
+
+ /**
+ * Find the validations by checking the validation's name using the given regular expression.
+ * @param namePattern the regular expression to use, not null.
+ * @return the sections defined, never null.
+ */
+ String findConfigurationModels(String namePattern);
+
+ /**
+ * Find the validations by checking the validation's name using the given regular expression.
+ * @param type the target ModelTypes (optional), not null.
+ * @param namePattern the regular expression to use, not null.
+ * @return the sections defined, never null.
+ */
+ String findValidationModels(String namePattern, ValidationTarget... type);
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/54b627b9/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
new file mode 100644
index 0000000..0240304
--- /dev/null
+++ b/validation/src/main/java/org/apache/tamaya/validation/spi/ConfigValidationReader.java
@@ -0,0 +1,131 @@
+/*
+ * 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 java.util.*;
+
+import org.apache.tamaya.validation.ValidationModel;
+
+/**
+ * Utility class to read metamodel information from properties. Hereby these properties can be part of a
+ * configuration (containing other entriees as well) or be dedicated model definition properties read
+ * from any kind of source.
+ */
+public final class ConfigValidationReader {
+
+ /** The default model entries selector. */
+ private static final String DEFAULT_META_INFO_SELECTOR = ".model";
+
+ /**
+ * Utility class only.
+ */
+ private ConfigValidationReader(){}
+
+
+ /**
+ * Loads validations as configured in the given properties.
+ * @param owner owner, not null.
+ * @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<>();
+ Set<String> itemKeys = new HashSet<>();
+ for (String key : props.keySet()) {
+ if (key.toString().startsWith("_") &&
+ key.toString().endsWith(DEFAULT_META_INFO_SELECTOR + ".target")) {
+ itemKeys.add(key.toString().substring(0, key.toString().length() - ".model.target".length()));
+ }
+ }
+ for (String baseKey : itemKeys) {
+ String target = props.get(baseKey + ".model.target");
+ String type = props.get(baseKey + ".model.type");
+ String value = props.get(baseKey + ".model.transitive");
+ boolean transitive = false;
+ if(value!=null) {
+ transitive = Boolean.parseBoolean(value);
+ }
+ String description = props.get(baseKey + ".model.description");
+ String regEx = props.get(baseKey + ".model.expression");
+ String validations = props.get(baseKey + ".model.validations");
+ String requiredVal = props.get(baseKey + ".model.required");
+ String targetKey = baseKey.substring(1);
+ try {
+ if ("Parameter".equalsIgnoreCase(target)) {
+ result.add(validateParameter(owner, targetKey,
+ description, type, requiredVal, regEx, validations));
+ } else if ("Section".equalsIgnoreCase(target)) {
+ if (transitive) {
+ result.add(validateSection(owner, targetKey + ".*",
+ description, requiredVal, validations));
+ } else {
+ result.add(validateSection(owner, targetKey,
+ description, requiredVal, validations));
+ }
+ }
+ }catch(Exception e){
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Creates a parameter validation.
+ * @param paramName the param name, not null.
+ * @param description the optional description
+ * @param type the param type, default is String.
+ * @param reqVal the required value, default is 'false'.
+ * @param regEx an optional regular expression to be checked for this param
+ * @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) {
+ boolean required = "true".equalsIgnoreCase(reqVal);
+ ValidateParameter.Builder builder = ValidateParameter.builder(owner, paramName).setRequired(required)
+ .setDescription(description).setExpression(regEx);
+ if(type!=null) {
+ builder.setType(type);
+ }
+// if(validations!=null) {
+// builder.setValidations(validations);
+// }
+ return builder.build();
+ }
+
+ /**
+ * Creates a section validation.
+ * @param sectionName the section's name, not null.
+ * @param description the optional description
+ * @param reqVal the required value, default is 'false'.
+ * @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) {
+ boolean required = "true".equalsIgnoreCase(reqVal);
+ ValidateSection.Builder builder = ValidateSection.builder(owner, sectionName).setRequired(required)
+ .setDescription(description);
+ // if(validations!=null) {
+// builder.setValidations(validations);
+// }
+ return builder.build();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/54b627b9/validation/src/main/java/org/apache/tamaya/validation/spi/GroupModel.java
----------------------------------------------------------------------
diff --git a/validation/src/main/java/org/apache/tamaya/validation/spi/GroupModel.java b/validation/src/main/java/org/apache/tamaya/validation/spi/GroupModel.java
deleted file mode 100644
index 7266db7..0000000
--- a/validation/src/main/java/org/apache/tamaya/validation/spi/GroupModel.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.Configuration;
-import org.apache.tamaya.validation.ConfigModel;
-import org.apache.tamaya.validation.ModelTarget;
-import org.apache.tamaya.validation.Validation;
-
-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 GroupModel implements ConfigModel {
-
- private final String owner;
- private final String name;
- private boolean required;
- private List<ConfigModel> childModels = new ArrayList<>();
-
- public GroupModel(String owner, String name, ConfigModel... configModels){
- this(owner, name, Arrays.asList(configModels));
- }
-
- public GroupModel(String owner, String name, Collection<ConfigModel> configModels){
- this.owner = Objects.requireNonNull(owner);
- this.name = Objects.requireNonNull(name);
- this.childModels.addAll(configModels);
- this.childModels = Collections.unmodifiableList(childModels);
- for(ConfigModel 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 ModelTarget getType() {
- return ModelTarget.Group;
- }
-
- @Override
- public String getDescription() {
- if(childModels.isEmpty()){
- return null;
- }
- StringBuilder b = new StringBuilder();
- for(ConfigModel val: childModels){
- b.append(" >> ").append(val);
- }
- return b.toString();
- }
-
- public Collection<ConfigModel> getValidations(){
- return childModels;
- }
-
- @Override
- public Collection<Validation> validate(Configuration config) {
- List<Validation> result = new ArrayList<>(1);
- for(ConfigModel 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/54b627b9/validation/src/main/java/org/apache/tamaya/validation/spi/ModelProviderSpi.java
----------------------------------------------------------------------
diff --git a/validation/src/main/java/org/apache/tamaya/validation/spi/ModelProviderSpi.java b/validation/src/main/java/org/apache/tamaya/validation/spi/ModelProviderSpi.java
deleted file mode 100644
index 9e2a4d4..0000000
--- a/validation/src/main/java/org/apache/tamaya/validation/spi/ModelProviderSpi.java
+++ /dev/null
@@ -1,39 +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.ConfigModel;
-
-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 ModelProviderSpi {
-
- /**
- * Get the validation defined.
- *
- * @return the sections defined, never null.
- */
- Collection<ConfigModel> getConfigModels();
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/54b627b9/validation/src/main/java/org/apache/tamaya/validation/spi/ParameterModel.java
----------------------------------------------------------------------
diff --git a/validation/src/main/java/org/apache/tamaya/validation/spi/ParameterModel.java b/validation/src/main/java/org/apache/tamaya/validation/spi/ParameterModel.java
deleted file mode 100644
index f6acafe..0000000
--- a/validation/src/main/java/org/apache/tamaya/validation/spi/ParameterModel.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.Configuration;
-import org.apache.tamaya.validation.ConfigModel;
-import org.apache.tamaya.validation.ModelTarget;
-import org.apache.tamaya.validation.Validation;
-
-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 ParameterModel 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 ParameterModel(Builder builder) {
- super(builder.owner, builder.name, builder.required, builder.description);
- this.regEx = builder.regEx;
- this.type = builder.type;
- }
-
- @Override
- public ModelTarget getType() {
- return ModelTarget.Parameter;
- }
-
- /**
- * Get the required parameter type.
- *
- * @return the type.
- */
- public Class<?> getParameterType() {
- return type;
- }
-
- @Override
- public Collection<Validation> validate(Configuration config) {
- List<Validation> result = new ArrayList<>(1);
- String configValue = config.get(getName());
- if (configValue == null && isRequired()) {
- result.add(Validation.ofMissing(this));
- }
- if (configValue != null && regEx != null) {
- if (!configValue.matches(regEx)) {
- result.add(Validation.ofError(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 ConfigModel 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 ConfigModel 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 ConfigModel 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.ui.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 ConfigModel build() {
- return new ParameterModel(this);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/54b627b9/validation/src/main/java/org/apache/tamaya/validation/spi/SectionModel.java
----------------------------------------------------------------------
diff --git a/validation/src/main/java/org/apache/tamaya/validation/spi/SectionModel.java b/validation/src/main/java/org/apache/tamaya/validation/spi/SectionModel.java
deleted file mode 100644
index 23d9f91..0000000
--- a/validation/src/main/java/org/apache/tamaya/validation/spi/SectionModel.java
+++ /dev/null
@@ -1,202 +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.Configuration;
-import org.apache.tamaya.validation.ConfigModel;
-import org.apache.tamaya.validation.ModelTarget;
-import org.apache.tamaya.validation.Validation;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-
-/**
- * Default configuration Model for a configuration section.
- */
-public class SectionModel extends GroupModel {
-
- /**
- * Creates a new builder.
- * @param owner owner, not null.
- * @param name the section name.
- * @return a new builder instance.
- */
- public static Builder builder(String owner, String name){
- return new Builder(owner, name);
- }
-
- /**
- * Creates a section validation for the given section.
- * @param owner owner, not null.
- * @param name the fully qualified section name
- * @param required flag, if the section is required to be present.
- * @return the ConfigModel instance
- */
- public static ConfigModel of(String owner, String name, boolean required){
- return new Builder(owner, name).setRequired(required).build();
- }
-
- /**
- * Creates a section validation for the given section.
- * @param owner owner, not null.
- * @param name the fully qualified section name
- * @param required flag, if the section is required to be present.
- * @param configModels additional configModels
- * @return a new builder, never null.
- */
- public static ConfigModel of(String owner, String name, boolean required, ConfigModel... configModels){
- return new Builder(owner, name).setRequired(required).addValidations(configModels).build();
- }
-
- /**
- * Internal constructor.
- * @param builder the builder, not null.
- */
- protected SectionModel(Builder builder) {
- super(builder.owner, builder.name, builder.childConfigModels);
- }
-
- @Override
- public ModelTarget getType(){
- return ModelTarget.Section;
- }
-
- @Override
- public Collection<Validation> validate(Configuration config) {
- Map<String,String> map = config.getProperties();
- String lookupKey = getName() + '.';
- boolean present = false;
- for(String key:map.keySet()){
- if(key.startsWith("_")){
- continue;
- }
- if(key.startsWith(lookupKey)){
- present = true;
- break;
- }
- }
- List<Validation> result = new ArrayList<>(1);
- if(isRequired() && !present) {
- result.add(Validation.ofMissing(this));
- }
- result.addAll(super.validate(config));
- return result;
- }
-
- @Override
- public String toString() {
- StringBuilder b = new StringBuilder();
- b.append(getType()).append(": ").append(getName());
- if(isRequired()) {
- b.append(", required: " ).append(isRequired());
- }
- for(ConfigModel val:getValidations()){
- b.append(", ").append(val.toString());
- }
- return b.toString();
- }
-
- /**
- * Builder for setting up a AreaConfigModel instance.
- */
- public static class Builder{
- /** The section owner. */
- private String owner;
- /** The section name. */
- private String name;
- /** The optional description. */
- private String description;
- /** The required flag. */
- private boolean required;
- /** The (optional) custom validations.*/
- private final List<ConfigModel> childConfigModels = new ArrayList<>();
-
- /**
- * Creates a new Builder.
- * @param owner owner, not null.
- * @param sectionName the section name, not null.
- */
- public Builder(String owner, String sectionName){
- this.owner = Objects.requireNonNull(owner);
- this.name = Objects.requireNonNull(sectionName);
- }
-
- /**
- * Add configModels.
- * @param configModels the configModels, not null.
- * @return the Builder for chaining.
- */
- public Builder addValidations(ConfigModel... configModels){
- this.childConfigModels.addAll(Arrays.asList(configModels));
- return this;
- }
-
- /**
- * Add configModels.
- * @param configModels the configModels, not null.
- * @return the Builder for chaining.
- */
- public Builder addValidations(Collection<ConfigModel> configModels){
- this.childConfigModels.addAll(configModels);
- return this;
- }
-
- /**
- * Sets the required flag.
- * @param required zhe flag.
- * @return the Builder for chaining.
- */
- public Builder setRequired(boolean required){
- this.required = required;
- return this;
- }
-
- /**
- * Set the )optional) description.
- * @param description the description.
- * @return the Builder for chaining.
- */
- public Builder setDescription(String description){
- this.description = description;
- return this;
- }
-
- /**
- * Set the section name
- * @param name the section name, not null.
- * @return the Builder for chaining.
- */
- public Builder setName(String name){
- this.name = Objects.requireNonNull(name);
- return this;
- }
-
- /**
- * Build a new ConfigModel instance.
- * @return the new ConfigModel instance, not null.
- */
- public ConfigModel build(){
- return new SectionModel(this);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/54b627b9/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
new file mode 100644
index 0000000..6b7634c
--- /dev/null
+++ b/validation/src/main/java/org/apache/tamaya/validation/spi/ValidateGroup.java
@@ -0,0 +1,110 @@
+/*
+ * 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/54b627b9/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
new file mode 100644
index 0000000..5d598f1
--- /dev/null
+++ b/validation/src/main/java/org/apache/tamaya/validation/spi/ValidateParameter.java
@@ -0,0 +1,242 @@
+/*
+ * 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);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/54b627b9/validation/src/main/java/org/apache/tamaya/validation/spi/ValidateSection.java
----------------------------------------------------------------------
diff --git a/validation/src/main/java/org/apache/tamaya/validation/spi/ValidateSection.java b/validation/src/main/java/org/apache/tamaya/validation/spi/ValidateSection.java
new file mode 100644
index 0000000..99e24e7
--- /dev/null
+++ b/validation/src/main/java/org/apache/tamaya/validation/spi/ValidateSection.java
@@ -0,0 +1,201 @@
+/*
+ * 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.List;
+import java.util.Objects;
+
+/**
+ * Default configuration Model for a configuration section.
+ */
+public class ValidateSection extends ValidateGroup {
+
+ /**
+ * Creates a new builder.
+ * @param owner owner, not null.
+ * @param name the section name.
+ * @return a new builder instance.
+ */
+ public static Builder builder(String owner, String name){
+ return new Builder(owner, name);
+ }
+
+ /**
+ * Creates a section validation for the given section.
+ * @param owner owner, not null.
+ * @param name the fully qualified section name
+ * @param required flag, if the section is required to be present.
+ * @return the ConfigModel instance
+ */
+ public static ValidationModel of(String owner, String name, boolean required){
+ return new Builder(owner, name).setRequired(required).build();
+ }
+
+ /**
+ * Creates a section validation for the given section.
+ * @param owner owner, not null.
+ * @param name the fully qualified section name
+ * @param required flag, if the section is required to be present.
+ * @param configModels additional configModels
+ * @return a new builder, never null.
+ */
+ public static ValidationModel of(String owner, String name, boolean required, ValidationModel... configModels){
+ return new Builder(owner, name).setRequired(required).addValidations(configModels).build();
+ }
+
+ /**
+ * Internal constructor.
+ * @param builder the builder, not null.
+ */
+ protected ValidateSection(Builder builder) {
+ super(builder.owner, builder.name, builder.childConfigModels);
+ }
+
+ @Override
+ public ValidationTarget getType(){
+ return ValidationTarget.Section;
+ }
+
+ @Override
+ public Collection<Validation> validate(Config config) {
+ Iterable<String> propertyNames = config.getPropertyNames();
+ String lookupKey = getName() + '.';
+ boolean present = false;
+ for(String key:propertyNames){
+ if(key.startsWith("_")){
+ continue;
+ }
+ if(key.startsWith(lookupKey)){
+ present = true;
+ break;
+ }
+ }
+ List<Validation> result = new ArrayList<>(1);
+ if(isRequired() && !present) {
+ result.add(Validation.checkMissing(this));
+ }
+ result.addAll(super.validate(config));
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder b = new StringBuilder();
+ b.append(getType()).append(": ").append(getName());
+ if(isRequired()) {
+ b.append(", required: " ).append(isRequired());
+ }
+ for(ValidationModel val:getValidations()){
+ b.append(", ").append(val.toString());
+ }
+ return b.toString();
+ }
+
+ /**
+ * Builder for setting up a AreaConfigModel instance.
+ */
+ public static class Builder{
+ /** The section owner. */
+ private String owner;
+ /** The section name. */
+ private String name;
+ /** The optional description. */
+ private String description;
+ /** The required flag. */
+ private boolean required;
+ /** The (optional) custom validations.*/
+ private final List<ValidationModel> childConfigModels = new ArrayList<>();
+
+ /**
+ * Creates a new Builder.
+ * @param owner owner, not null.
+ * @param sectionName the section name, not null.
+ */
+ public Builder(String owner, String sectionName){
+ this.owner = Objects.requireNonNull(owner);
+ this.name = Objects.requireNonNull(sectionName);
+ }
+
+ /**
+ * Add configModels.
+ * @param configModels the configModels, not null.
+ * @return the Builder for chaining.
+ */
+ public Builder addValidations(ValidationModel... configModels){
+ this.childConfigModels.addAll(Arrays.asList(configModels));
+ return this;
+ }
+
+ /**
+ * Add configModels.
+ * @param configModels the configModels, not null.
+ * @return the Builder for chaining.
+ */
+ public Builder addValidations(Collection<ValidationModel> configModels){
+ this.childConfigModels.addAll(configModels);
+ return this;
+ }
+
+ /**
+ * Sets the required flag.
+ * @param required zhe flag.
+ * @return the Builder for chaining.
+ */
+ public Builder setRequired(boolean required){
+ this.required = required;
+ return this;
+ }
+
+ /**
+ * Set the )optional) description.
+ * @param description the description.
+ * @return the Builder for chaining.
+ */
+ public Builder setDescription(String description){
+ this.description = description;
+ return this;
+ }
+
+ /**
+ * Set the section name
+ * @param name the section name, not null.
+ * @return the Builder for chaining.
+ */
+ public Builder setName(String name){
+ this.name = Objects.requireNonNull(name);
+ return this;
+ }
+
+ /**
+ * Build a new ConfigModel instance.
+ * @return the new ConfigModel instance, not null.
+ */
+ public ValidationModel build(){
+ return new ValidateSection(this);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/54b627b9/validation/src/main/java/org/apache/tamaya/validation/spi/ValidationModelProviderSpi.java
----------------------------------------------------------------------
diff --git a/validation/src/main/java/org/apache/tamaya/validation/spi/ValidationModelProviderSpi.java b/validation/src/main/java/org/apache/tamaya/validation/spi/ValidationModelProviderSpi.java
new file mode 100644
index 0000000..9e40d22
--- /dev/null
+++ b/validation/src/main/java/org/apache/tamaya/validation/spi/ValidationModelProviderSpi.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.ValidationModel;
+
+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 ValidationModelProviderSpi {
+
+ /**
+ * Get the validation defined.
+ *
+ * @return the sections defined, never null.
+ */
+ Collection<ValidationModel> getConfigModels();
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/54b627b9/validation/src/main/resources/META-INF/configmodel.properties
----------------------------------------------------------------------
diff --git a/validation/src/main/resources/META-INF/configmodel.properties b/validation/src/main/resources/META-INF/configmodel.properties
deleted file mode 100644
index 3381a09..0000000
--- a/validation/src/main/resources/META-INF/configmodel.properties
+++ /dev/null
@@ -1,35 +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 current 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.
-#
-# Contains definitions for default system property areas.
-_awt.model.target=Section
-_awt.model.transitive=true
-_file.model.target=Section
-_file.model.transitive=true
-_java.model.target=Section
-_java.model.transitive=true
-_line.model.target=Section
-_line.model.transitive=true
-_os.model.target=Section
-_os.model.transitive=true
-_path.model.target=Section
-_path.model.transitive=true
-_sun.model.target=Section
-_sun.model.transitive=true
-_user.model.target=Section
-_user.model.transitive=true
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/54b627b9/validation/src/main/resources/META-INF/configvalidation.properties
----------------------------------------------------------------------
diff --git a/validation/src/main/resources/META-INF/configvalidation.properties b/validation/src/main/resources/META-INF/configvalidation.properties
new file mode 100644
index 0000000..3381a09
--- /dev/null
+++ b/validation/src/main/resources/META-INF/configvalidation.properties
@@ -0,0 +1,35 @@
+#
+# 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 current 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.
+#
+# Contains definitions for default system property areas.
+_awt.model.target=Section
+_awt.model.transitive=true
+_file.model.target=Section
+_file.model.transitive=true
+_java.model.target=Section
+_java.model.transitive=true
+_line.model.target=Section
+_line.model.transitive=true
+_os.model.target=Section
+_os.model.transitive=true
+_path.model.target=Section
+_path.model.transitive=true
+_sun.model.target=Section
+_sun.model.transitive=true
+_user.model.target=Section
+_user.model.transitive=true
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/54b627b9/validation/src/main/resources/META-INF/services/org.apache.tamaya.events.ConfigEventListener
----------------------------------------------------------------------
diff --git a/validation/src/main/resources/META-INF/services/org.apache.tamaya.events.ConfigEventListener b/validation/src/main/resources/META-INF/services/org.apache.tamaya.events.ConfigEventListener
index e8b12e9..8523d8c 100644
--- a/validation/src/main/resources/META-INF/services/org.apache.tamaya.events.ConfigEventListener
+++ b/validation/src/main/resources/META-INF/services/org.apache.tamaya.events.ConfigEventListener
@@ -16,4 +16,4 @@
# specific language governing permissions and limitations
# under the License.
#
-org.apache.tamaya.model.internal.ConfiguredTypeEventsModelPopulator
\ No newline at end of file
+org.apache.tamaya.validation.internal.ConfiguredTypeEventsModelPopulator
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/54b627b9/validation/src/main/resources/META-INF/services/org.apache.tamaya.validation.spi.ConfigDocumentationMBean
----------------------------------------------------------------------
diff --git a/validation/src/main/resources/META-INF/services/org.apache.tamaya.validation.spi.ConfigDocumentationMBean b/validation/src/main/resources/META-INF/services/org.apache.tamaya.validation.spi.ConfigDocumentationMBean
deleted file mode 100644
index f41ad43..0000000
--- a/validation/src/main/resources/META-INF/services/org.apache.tamaya.validation.spi.ConfigDocumentationMBean
+++ /dev/null
@@ -1,38 +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.
-#
-
-#
-# 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 current 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.
-#
-org.apache.tamaya.validation.internal.ConfigDocumentationBean
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/54b627b9/validation/src/main/resources/META-INF/services/org.apache.tamaya.validation.spi.ConfigValidationMBean
----------------------------------------------------------------------
diff --git a/validation/src/main/resources/META-INF/services/org.apache.tamaya.validation.spi.ConfigValidationMBean b/validation/src/main/resources/META-INF/services/org.apache.tamaya.validation.spi.ConfigValidationMBean
new file mode 100644
index 0000000..d5549f3
--- /dev/null
+++ b/validation/src/main/resources/META-INF/services/org.apache.tamaya.validation.spi.ConfigValidationMBean
@@ -0,0 +1,19 @@
+#
+# 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 current 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.
+#
+org.apache.tamaya.validation.internal.ConfigValidationBean
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/54b627b9/validation/src/main/resources/META-INF/services/org.apache.tamaya.validation.spi.ModelProviderSpi
----------------------------------------------------------------------
diff --git a/validation/src/main/resources/META-INF/services/org.apache.tamaya.validation.spi.ModelProviderSpi b/validation/src/main/resources/META-INF/services/org.apache.tamaya.validation.spi.ModelProviderSpi
deleted file mode 100644
index 3866a74..0000000
--- a/validation/src/main/resources/META-INF/services/org.apache.tamaya.validation.spi.ModelProviderSpi
+++ /dev/null
@@ -1,41 +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.
-#
-
-#
-# 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 current 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.
-#
-org.apache.tamaya.validation.internal.ConfiguredPropertiesModelProviderSpi
-org.apache.tamaya.validation.internal.ConfiguredInlineModelProviderSpi
-org.apache.tamaya.validation.internal.ConfiguredResourcesModelProviderSpi
-org.apache.tamaya.validation.internal.ConfiguredTypeEventsModelProvider
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/54b627b9/validation/src/main/resources/META-INF/services/org.apache.tamaya.validation.spi.ValidationModelProviderSpi
----------------------------------------------------------------------
diff --git a/validation/src/main/resources/META-INF/services/org.apache.tamaya.validation.spi.ValidationModelProviderSpi b/validation/src/main/resources/META-INF/services/org.apache.tamaya.validation.spi.ValidationModelProviderSpi
new file mode 100644
index 0000000..2788871
--- /dev/null
+++ b/validation/src/main/resources/META-INF/services/org.apache.tamaya.validation.spi.ValidationModelProviderSpi
@@ -0,0 +1,22 @@
+#
+# 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 current 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.
+#
+org.apache.tamaya.validation.internal.ConfiguredPropertiesModelProviderSpi
+org.apache.tamaya.validation.internal.ConfiguredInlineModelProviderSpi
+org.apache.tamaya.validation.internal.ConfiguredResourcesModelProviderSpi
+org.apache.tamaya.validation.internal.ConfiguredTypeEventsModelProvider
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/54b627b9/validation/src/test/java/org/apache/tamaya/validation/ConfigModelProviderTest.java
----------------------------------------------------------------------
diff --git a/validation/src/test/java/org/apache/tamaya/validation/ConfigModelProviderTest.java b/validation/src/test/java/org/apache/tamaya/validation/ConfigModelProviderTest.java
index dda2b67..ea5c375 100644
--- a/validation/src/test/java/org/apache/tamaya/validation/ConfigModelProviderTest.java
+++ b/validation/src/test/java/org/apache/tamaya/validation/ConfigModelProviderTest.java
@@ -18,10 +18,10 @@
*/
package org.apache.tamaya.validation;
-import org.apache.tamaya.validation.spi.SectionModel;
-import org.apache.tamaya.validation.spi.ParameterModel;
-import org.apache.tamaya.validation.spi.GroupModel;
-import org.apache.tamaya.validation.spi.ModelProviderSpi;
+import org.apache.tamaya.validation.spi.ValidateSection;
+import org.apache.tamaya.validation.spi.ValidateParameter;
+import org.apache.tamaya.validation.spi.ValidateGroup;
+import org.apache.tamaya.validation.spi.ValidationModelProviderSpi;
import java.util.ArrayList;
import java.util.Collection;
@@ -32,31 +32,31 @@ import java.util.List;
/**
* Created by Anatole on 09.08.2015.
*/
-public class ConfigModelProviderTest implements ModelProviderSpi {
+public class ConfigModelProviderTest implements ValidationModelProviderSpi {
- private List<ConfigModel> configModels = new ArrayList<>(1);
+ private List<ValidationModel> configModels = new ArrayList<>(1);
public ConfigModelProviderTest(){
configModels.add(new TestConfigModel());
configModels = Collections.unmodifiableList(configModels);
}
- public Collection<ConfigModel> getConfigModels() {
+ public Collection<ValidationModel> getConfigModels() {
return configModels;
}
- private static final class TestConfigModel extends GroupModel {
+ private static final class TestConfigModel extends ValidateGroup {
public TestConfigModel(){
- super("TestConfigModel", "TestConfig", new SectionModel.Builder("TestConfigModel",
+ super("TestConfigModel", "TestConfig", new ValidateSection.Builder("TestConfigModel",
"a.test.existing").setRequired(true).build(),
- ParameterModel.of("TestConfigModel", "a.test.existing.aParam", true),
- ParameterModel.of("TestConfigModel", "a.test.existing.optionalParam"),
- ParameterModel.of("TestConfigModel", "a.test.existing.aABCParam", false, "[ABC].*"),
- new SectionModel.Builder("TestConfigModel", "a.test.notexisting").setRequired(true).build(),
- ParameterModel.of("TestConfigModel", "a.test.notexisting.aParam", true),
- ParameterModel.of("TestConfigModel", "a.test.notexisting.optionalParam"),
- ParameterModel.of("TestConfigModel", "a.test.existing.aABCParam2", false, "[ABC].*"));
+ ValidateParameter.of("TestConfigModel", "a.test.existing.aParam", true),
+ ValidateParameter.of("TestConfigModel", "a.test.existing.optionalParam"),
+ ValidateParameter.of("TestConfigModel", "a.test.existing.aABCParam", false, "[ABC].*"),
+ new ValidateSection.Builder("TestConfigModel", "a.test.notexisting").setRequired(true).build(),
+ ValidateParameter.of("TestConfigModel", "a.test.notexisting.aParam", true),
+ ValidateParameter.of("TestConfigModel", "a.test.notexisting.optionalParam"),
+ ValidateParameter.of("TestConfigModel", "a.test.existing.aABCParam2", false, "[ABC].*"));
}
@Override
public String getName() {
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/54b627b9/validation/src/test/java/org/apache/tamaya/validation/ValidationTests.java
----------------------------------------------------------------------
diff --git a/validation/src/test/java/org/apache/tamaya/validation/ValidationTests.java b/validation/src/test/java/org/apache/tamaya/validation/ValidationTests.java
index 29c3801..5507584 100644
--- a/validation/src/test/java/org/apache/tamaya/validation/ValidationTests.java
+++ b/validation/src/test/java/org/apache/tamaya/validation/ValidationTests.java
@@ -20,6 +20,8 @@ package org.apache.tamaya.validation;
import org.junit.Test;
+import javax.config.ConfigProvider;
+
/**
* Created by Anatole on 10.08.2015.
*/
@@ -27,26 +29,27 @@ public class ValidationTests {
@Test
public void testDefaults(){
- System.err.println(ConfigModelManager.validate());
+ System.err.println(ValidationManager.getInstance().validate(ConfigProvider.getConfig()));
}
@Test
public void testAllValidations(){
- System.err.println(ConfigModelManager.getModels());
+ System.err.println(ValidationManager.getInstance().getModels());
}
@Test
public void testConfigInfo(){
- System.err.println(ConfigModelManager.getConfigInfoText());
+ System.err.println(ValidationManager.getInstance().getConfigInfoText());
}
@Test
public void testAllValidationsInclUndefined(){
- System.err.println("Including UNDEFINED: \n" + ConfigModelManager.validate(true));
+ System.err.println("Including UNDEFINED: \n" + ValidationManager.getInstance().validate(
+ ConfigProvider.getConfig(), true));
}
@Test
public void testModels(){
- System.err.println("MODELS: " +ConfigModelManager.getModels());
+ System.err.println("MODELS: " + ValidationManager.getInstance().getModels());
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/54b627b9/validation/src/test/java/org/apache/tamaya/validation/internal/ConfigDocumentationBeanTest.java
----------------------------------------------------------------------
diff --git a/validation/src/test/java/org/apache/tamaya/validation/internal/ConfigDocumentationBeanTest.java b/validation/src/test/java/org/apache/tamaya/validation/internal/ConfigDocumentationBeanTest.java
index 39bf657..ba19c7e 100644
--- a/validation/src/test/java/org/apache/tamaya/validation/internal/ConfigDocumentationBeanTest.java
+++ b/validation/src/test/java/org/apache/tamaya/validation/internal/ConfigDocumentationBeanTest.java
@@ -18,7 +18,7 @@
*/
package org.apache.tamaya.validation.internal;
-import org.apache.tamaya.validation.ModelTarget;
+import org.apache.tamaya.validation.ValidationTarget;
import org.junit.Test;
import static org.junit.Assert.assertFalse;
@@ -30,7 +30,7 @@ import static org.junit.Assert.assertTrue;
*/
public class ConfigDocumentationBeanTest {
- private final ConfigDocumentationBean mbean = new ConfigDocumentationBean();
+ private final ConfigValidationBean mbean = new ConfigValidationBean();
@Test
public void testValidate_NoUnknowns() throws Exception {
@@ -73,7 +73,7 @@ public class ConfigDocumentationBeanTest {
@Test
public void testGetConfigurationModel_WithSection() throws Exception {
- String results = mbean.getConfigurationModel(ModelTarget.Parameter);
+ String results = mbean.getConfigurationModel(ValidationTarget.Parameter);
assertNotNull(results);
assertFalse(results.trim().isEmpty());
assertTrue(results.contains("\"target\":\"Parameter\""));
@@ -92,7 +92,7 @@ public class ConfigDocumentationBeanTest {
@Test
public void testFindValidationModels() throws Exception {
- String results = mbean.findValidationModels("a", ModelTarget.Section);
+ String results = mbean.findValidationModels("a", ValidationTarget.Section);
assertNotNull(results);
assertFalse(results.trim().isEmpty());
assertFalse(results.contains("\"target\":\"Parameter\""));
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/54b627b9/validation/src/test/java/test/model/TestConfigAccessor.java
----------------------------------------------------------------------
diff --git a/validation/src/test/java/test/model/TestConfigAccessor.java b/validation/src/test/java/test/model/TestConfigAccessor.java
index 498d2b6..e3ed825 100644
--- a/validation/src/test/java/test/model/TestConfigAccessor.java
+++ b/validation/src/test/java/test/model/TestConfigAccessor.java
@@ -18,9 +18,10 @@
*/
package test.model;
-import org.apache.tamaya.Configuration;
-import org.apache.tamaya.ConfigurationProvider;
+import org.apache.tamaya.functions.ConfigurationFunctions;
+import javax.config.Config;
+import javax.config.ConfigProvider;
import java.util.Map;
/**
@@ -31,15 +32,14 @@ public final class TestConfigAccessor {
private TestConfigAccessor(){}
public static Map<String,String> readAllProperties(){
- return ConfigurationProvider.getConfiguration()
- .getProperties();
+ return ConfigurationFunctions.toMap(ConfigProvider.getConfig());
}
- public static Configuration readConfiguration(){
- return ConfigurationProvider.getConfiguration();
+ public static Config readConfiguration(){
+ return ConfigProvider.getConfig();
}
- public static String readProperty(Configuration config, String key){
- return config.get(key);
+ public static String readProperty(Config config, String key){
+ return config.getOptionalValue(key, String.class).orElse(null);
}
}