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 2015/08/21 02:41:45 UTC
[3/6] incubator-tamaya git commit: Implemented,
moved experimental modules and added them to non experimental parts:
- functions (operators and queries) - model (validation and documentation) -
management (jmx bean support)
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5343410/modules/model/src/main/resources/META-INF/services/org.apache.tamaya.model.spi.ValidationProviderSpi
----------------------------------------------------------------------
diff --git a/modules/model/src/main/resources/META-INF/services/org.apache.tamaya.model.spi.ValidationProviderSpi b/modules/model/src/main/resources/META-INF/services/org.apache.tamaya.model.spi.ValidationProviderSpi
new file mode 100644
index 0000000..47c18de
--- /dev/null
+++ b/modules/model/src/main/resources/META-INF/services/org.apache.tamaya.model.spi.ValidationProviderSpi
@@ -0,0 +1,21 @@
+#
+# 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.model.internal.ConfiguredPropertiesValidationProviderSpi
+org.apache.tamaya.model.internal.ConfiguredInlineModelProviderSpi
+org.apache.tamaya.model.internal.ConfiguredResourcesModelProviderSpi
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5343410/modules/model/src/test/java/org/apache/tamaya/model/TestConfigValidationProvider.java
----------------------------------------------------------------------
diff --git a/modules/model/src/test/java/org/apache/tamaya/model/TestConfigValidationProvider.java b/modules/model/src/test/java/org/apache/tamaya/model/TestConfigValidationProvider.java
new file mode 100644
index 0000000..b923ed3
--- /dev/null
+++ b/modules/model/src/test/java/org/apache/tamaya/model/TestConfigValidationProvider.java
@@ -0,0 +1,66 @@
+/*
+ * 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.model;
+
+import org.apache.tamaya.model.spi.AreaValidation;
+import org.apache.tamaya.model.spi.ParameterValidation;
+import org.apache.tamaya.model.spi.ValidationGroup;
+import org.apache.tamaya.model.spi.ValidationProviderSpi;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Created by Anatole on 09.08.2015.
+ */
+public class TestConfigValidationProvider implements ValidationProviderSpi{
+
+ private List<Validation> validations = new ArrayList<>(1);
+
+ public TestConfigValidationProvider(){
+ validations.add(new TestConfigValidation());
+ validations = Collections.unmodifiableList(validations);
+ }
+
+ @Override
+ public Collection<Validation> getValidations() {
+ return validations;
+ }
+
+ private static final class TestConfigValidation extends ValidationGroup{
+
+ public TestConfigValidation(){
+ super("TestConfig", "test", new AreaValidation.Builder("a.test.existing").setRequired(true).build(),
+ ParameterValidation.of("a.test.existing.aParam", true),
+ ParameterValidation.of("a.test.existing.optionalParam"),
+ ParameterValidation.of("a.test.existing.aABCParam", false, "[ABC].*"),
+ new AreaValidation.Builder("a.test.notexisting").setRequired(true).build(),
+ ParameterValidation.of("a.test.notexisting.aParam", true),
+ ParameterValidation.of("a.test.notexisting.optionalParam"),
+ ParameterValidation.of("a.test.existing.aABCParam2", false, "[ABC].*"));
+ }
+ @Override
+ public String getName() {
+ return "TestConfigValidation";
+ }
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5343410/modules/model/src/test/java/org/apache/tamaya/model/ValidationTests.java
----------------------------------------------------------------------
diff --git a/modules/model/src/test/java/org/apache/tamaya/model/ValidationTests.java b/modules/model/src/test/java/org/apache/tamaya/model/ValidationTests.java
new file mode 100644
index 0000000..53496ea
--- /dev/null
+++ b/modules/model/src/test/java/org/apache/tamaya/model/ValidationTests.java
@@ -0,0 +1,42 @@
+/*
+ * 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.model;
+
+import org.junit.Test;
+
+/**
+ * Created by Anatole on 10.08.2015.
+ */
+public class ValidationTests {
+
+ @Test
+ public void testDefaults(){
+ System.err.println(ConfigValidator.validate());
+ }
+
+ @Test
+ public void testAllValidations(){
+ System.err.println(ConfigValidator.getValidations());
+ }
+
+ @Test
+ public void testAllValidationsInclUndefined(){
+ System.err.println("Including UNDEFINED: \n" + ConfigValidator.validate(true));
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5343410/modules/model/src/test/java/org/apache/tamaya/model/internal/ConfigDocumentationBeanTest.java
----------------------------------------------------------------------
diff --git a/modules/model/src/test/java/org/apache/tamaya/model/internal/ConfigDocumentationBeanTest.java b/modules/model/src/test/java/org/apache/tamaya/model/internal/ConfigDocumentationBeanTest.java
new file mode 100644
index 0000000..4763a01
--- /dev/null
+++ b/modules/model/src/test/java/org/apache/tamaya/model/internal/ConfigDocumentationBeanTest.java
@@ -0,0 +1,112 @@
+/*
+ * 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.model.internal;
+
+import org.apache.tamaya.model.ValidationType;
+import org.junit.Test;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Created by Anatole on 19.08.2015.
+ */
+public class ConfigDocumentationBeanTest {
+
+ private ConfigDocumentationBean mbean = new ConfigDocumentationBean();
+
+ @Test
+ public void testValidate_NoUnknowns() throws Exception {
+ String results = mbean.validate(false);
+ assertNotNull(results);
+ assertFalse(results.trim().isEmpty());
+ assertTrue(results.contains("\"type\":\"Parameter\""));
+ assertTrue(results.contains("\"result\":\"MISSING\""));
+ assertFalse(results.contains("\"description\":\"Undefined key: "));
+ assertFalse(results.contains(" \"result\":\"UNDEFINED\""));
+ }
+
+ @Test
+ public void testValidate_WithUnknowns() throws Exception {
+ String results = mbean.validate(true);
+ assertNotNull(results);
+ assertFalse(results.trim().isEmpty());
+ // test transitive excludes of default sys properties
+ assertFalse(results.contains("\"name\":\"java"));
+ assertFalse(results.contains("\"name\":\"sun."));
+ assertFalse(results.contains("\"name\":\"file."));
+ // test others
+ assertTrue(results.contains("\"type\":\"Parameter\""));
+ assertTrue(results.contains("\"type\":\"Section\""));
+ assertTrue(results.contains("\"result\":\"MISSING\""));
+ assertTrue(results.contains("\"description\":\"Undefined key: "));
+ assertTrue(results.contains(" \"result\":\"UNDEFINED\""));
+ }
+
+ @Test
+ public void testGetConfigurationModel() throws Exception {
+ String results = mbean.getConfigurationModel();
+ assertNotNull(results);
+ assertFalse(results.trim().isEmpty());
+ assertTrue(results.contains("\"type\":\"Parameter\""));
+ assertTrue(results.contains("\"name\":\"MyNumber\""));
+ assertTrue(results.contains("\"name\":\"a.b.c\""));
+ assertTrue(results.contains("\"required\":true"));
+ }
+
+ @Test
+ public void testGetConfigurationModel_WithSection() throws Exception {
+ String results = mbean.getConfigurationModel(ValidationType.Parameter);
+ assertNotNull(results);
+ assertFalse(results.trim().isEmpty());
+ assertTrue(results.contains("\"type\":\"Parameter\""));
+ assertFalse(results.contains("\"type\":\"Section\""));
+ assertTrue(results.contains("\"required\":true"));
+ }
+
+ @Test
+ public void testFindConfigurationModels() throws Exception {
+ String results = mbean.findConfigurationModels("a");
+ assertNotNull(results);
+ assertFalse(results.trim().isEmpty());
+ assertFalse(results.contains("\"type\":\"Parameter\""));
+ assertTrue(results.contains("\"type\":\"Section\""));
+ }
+
+ @Test
+ public void testFindValidationModels() throws Exception {
+ String results = mbean.findValidationModels(ValidationType.Section, "a");
+ assertNotNull(results);
+ assertFalse(results.trim().isEmpty());
+ assertFalse(results.contains("\"type\":\"Parameter\""));
+ assertTrue(results.contains("\"type\":\"Section\""));
+ results = mbean.findValidationModels(ValidationType.CombinationPolicy, "a");
+ assertFalse(results.trim().isEmpty());
+ assertFalse(results.contains("\"type\":\"Parameter\""));
+ assertFalse(results.contains("\"type\":\"Section\""));
+ System.out.println(results);
+ }
+
+ @Test
+ public void testToString() throws Exception {
+ String toString = mbean.toString();
+ System.out.println(toString);
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5343410/modules/model/src/test/resources/META-INF/configmodel.properties
----------------------------------------------------------------------
diff --git a/modules/model/src/test/resources/META-INF/configmodel.properties b/modules/model/src/test/resources/META-INF/configmodel.properties
new file mode 100644
index 0000000..af37705
--- /dev/null
+++ b/modules/model/src/test/resources/META-INF/configmodel.properties
@@ -0,0 +1,96 @@
+#
+# 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.
+#
+
+###################################################################################
+# Example of a configuration metamodel expressed via properties.
+####################################################################################
+
+# Metamodel information
+{model}.provider=ConfigModel Extension
+
+# reusable parameter definition, referenceable as MyNumber
+{model}.MyNumber.class=Parameter
+{model}.MyNumber.type=Integer
+{model}.MyNumber.description=a (reusable) number type parameter (optional)
+
+####################################################################################
+# Description of Configuration Sections (minimal, can be extended by other modules).
+# By default its interpreted as a section !
+####################################################################################
+
+# a (section)
+{model}.a.class=Section
+{model}.a.params2.class=Parameter
+{model}.a.params2.type=String
+{model}.a.params2.required=true
+{model}.a.params2.description=a required parameter
+
+{model}.a.paramInt.class=Parameter
+{model}.a.paramInt.type=ref:MyNumber
+{model}.a.paramInt.description=an optional parameter (default)
+
+{model}.a._number.class=Parameter
+{model}.a._number.type=Integer
+{model}.a._number.deprecated=true
+{model}.a._number.mappedTo=a.paramInt
+
+# a.b.c (section)
+{model}.a.b.c.class=Section
+{model}.a.b.c.description=Just a test section
+
+# a.b.c.aRequiredSection (section)
+{model}.a.b.c.aRequiredSection.class=Section
+{model}.a.b.c.aRequiredSection.required=true
+{model}.a.b.c.aRequiredSection.description=A section containing required parameters is called a required section.\
+ Sections can also explicitly be defined to be required, but without\
+ specifying the paramteres to be contained.,
+
+# a.b.c.aRequiredSection.subsection (section)
+{model}.a.b.c.aRequiredSection.subsection.class=Section
+
+{model}.a.b.c.aRequiredSection.subsection.param0.class=Parameter
+{model}.a.b.c.aRequiredSection.subsection.param0.type=String
+{model}.a.b.c.aRequiredSection.subsection.param0.description=a minmally documented String parameter
+# A minmal String parameter
+{model}.a.b.c.aRequiredSection.subsection.param00.class=Parameter
+{model}.a.b.c.aRequiredSection.subsection.param00.type=String
+
+# a.b.c.aRequiredSection.subsection (section)
+{model}.a.b.c.aRequiredSection.subsection.param1.class=Parameter
+{model}.a.b.c.aRequiredSection.subsection.param1.type = String
+{model}.a.b.c.aRequiredSection.subsection.param1.required = true
+{model}.a.b.c.aRequiredSection.subsection.intParam.class=Parameter
+{model}.a.b.c.aRequiredSection.subsection.intParam.type = Integer
+{model}.a.b.c.aRequiredSection.subsection.intParam.description=an optional parameter (default)
+
+# a.b.c.aRequiredSection.nonempty-subsection (section)
+{model}.a.b.c.aRequiredSection.nonempty-subsection.class=Section
+{model}.a.b.c.aRequiredSection.nonempty-subsection.required=true
+
+# a.b.c.aRequiredSection.optional-subsection (section)
+{model}.a.b.c.aRequiredSection.optional-subsection.class=Section
+
+# a.b.c.aValidatedSection (section)
+{model}.a.b.c.aValidatedSection.class=Section
+{model}.a.b.c.aValidatedSection.description=A validated section.
+{model}.a.b.c.aValidatedSection.validations=org.apache.tamaya.model.TestValidator
+
+
+
+
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5343410/modules/model/src/test/resources/META-INF/javaconfiguration.properties
----------------------------------------------------------------------
diff --git a/modules/model/src/test/resources/META-INF/javaconfiguration.properties b/modules/model/src/test/resources/META-INF/javaconfiguration.properties
new file mode 100644
index 0000000..b0b8c22
--- /dev/null
+++ b/modules/model/src/test/resources/META-INF/javaconfiguration.properties
@@ -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.
+#
+a.test.existing.aParam=existingValue
+a.test.existing.optionalParam=optionalValue
+a.test.existing.aABCParam=ABCparam
+a.test.existing.aABCParam2=MMM
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5343410/modules/model/src/test/resources/META-INF/services/org.apache.tamaya.model.spi.ValidationProviderSpi
----------------------------------------------------------------------
diff --git a/modules/model/src/test/resources/META-INF/services/org.apache.tamaya.model.spi.ValidationProviderSpi b/modules/model/src/test/resources/META-INF/services/org.apache.tamaya.model.spi.ValidationProviderSpi
new file mode 100644
index 0000000..45c1b86
--- /dev/null
+++ b/modules/model/src/test/resources/META-INF/services/org.apache.tamaya.model.spi.ValidationProviderSpi
@@ -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.model.TestConfigValidationProvider
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5343410/modules/model/src/test/resources/examples/configmodel.ini
----------------------------------------------------------------------
diff --git a/modules/model/src/test/resources/examples/configmodel.ini b/modules/model/src/test/resources/examples/configmodel.ini
new file mode 100644
index 0000000..ec4070c
--- /dev/null
+++ b/modules/model/src/test/resources/examples/configmodel.ini
@@ -0,0 +1,76 @@
+#
+# 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.
+#
+
+###################################################################################
+# Example of a configuration metamodel expressed via ini(tm).
+####################################################################################
+
+####################################################################################
+# Description of Configuration Sections (minimal, can be extended by other modules).
+# By default its interpreted as a section !
+####################################################################################
+[{model}a]
+class = Section
+params2.type = String
+params2.required = true
+params2.description = "a required parameter"
+paramInt.ref = MyNumber
+paramInt.description = "an optional parameter (default)"
+_number.type = Integer
+_number.deprecated = true
+_number.mappedTo = "a.paramInt"
+
+[{model}a.b.c]
+class = Section
+description = Just a test section
+
+[{model}a.b.c.aRequiredSection]
+class = Section
+required = true
+description = A section containing required parameters is called a required section.\
+ Sections can also explicitly be defined to be required, but without\
+ specifying the paramteres to be contained.,
+
+[{model}a.b.c.aRequiredSection.subsection]
+class = Section
+param0.type = String
+param0.description = "a minmally documented String parameter"
+# A minmal String parameter
+param00.type = String
+# description is optional
+param1.type = String
+param1.required = true
+intParam.type = Integer
+intParam.description = "an optional parameter (default)"
+
+[{model}a.b.c.aRequiredSection.nonempty-subsection]
+class = Section
+required = true
+
+[{model}a.b.c.aRequiredSection.optional-subsection]
+class = Section
+
+[{model}a.b.c.aValidatedSection]
+class = Section
+description = "A validation section."
+validations = org.apache.tamaya.model.TestValidator?max=3
+
+
+
+
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5343410/modules/model/src/test/resources/examples/configmodel.json
----------------------------------------------------------------------
diff --git a/modules/model/src/test/resources/examples/configmodel.json b/modules/model/src/test/resources/examples/configmodel.json
new file mode 100644
index 0000000..1fd831e
--- /dev/null
+++ b/modules/model/src/test/resources/examples/configmodel.json
@@ -0,0 +1,113 @@
+/*
+* 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.
+*/
+
+//##################################################################################
+// Example of a configuration metamodel expressed via YAML(tm).
+// Structure is shown through indentation (one or more spaces).
+// Sequence items are denoted by a dash,
+// key value pairs within a map are separated by a colon.
+//##################################################################################
+
+//##################################################################################
+// Metamodel information
+//##################################################################################
+{
+ "{model}": {
+ "__name": "testmodel",
+ "__provider": "ConfigModel Extension",
+ "__version": "1.0",
+ "__release-date": "2001-01-23",
+ "__author": "Anatole Tresch",
+ // "modelformat": "alternate format reader type"
+ "__comments": "Late afternoon is best. Backup contact is Nancy.",
+ // reusable parameter definition
+ "MyNumber": {
+ "class": "Parameter",
+ "type": "Integer",
+ "template": true,
+ "description": "an (reusable) number type parameter (optional)"
+ },
+ //##################################################################################
+ // Description of Configuration Sections (minimal, can be extended by other modules).
+ //##################################################################################
+ "a": {
+ "class": "Section",
+ // required, default is parameter!
+ "params2": {
+ "required": true,
+ "description": "a required parameter"
+ },
+ "paramInt": {
+ // references a shared parameter definition.
+ "ref": "MyNumber",
+ "description": "an optional parameter (default)"
+ },
+ "_number": {
+ "type": "Integer",
+ "deprecated": true,
+ // references a deprecated parameter, now mapped to 'a.paramInt'.
+ "mappedto": "a.paramInt"
+ }
+ },
+ "a.b.c": {
+ "class": "Section",
+ "description": "Just a test section."
+ // a subsection, directly configured as child element.
+ "aRequiredSection": {
+ "class": "Section",
+ "required": true,
+ "description": "A section containing required parameters is called a required section."
+ }
+ },
+ // a subsection, configured in its own section.
+ "a.b.c.aRequiredSection.subsection": {
+ "class": "Section",
+ "param0": {
+ "type": "String",
+ "description": "a minmally documented String parameter"
+ },
+ // A minmally defined String parameter
+ "param00": {},
+ "param1": {
+ "type": "String",
+ "required": true,
+ "description": "a required parameter"
+ },
+ "intParam": {
+ "type": "Integer",
+ "required": true,
+ "description": "an optional parameter (default)"
+ }
+ },
+ "a.b.c.aRequiredSection.nonempty-subsection": {
+ "class": "Section",
+ "required": true
+ },
+ "a.b.c.aRequiredSection.optional-subsection": {
+ "class": "Section"
+ },
+ "a.b.c.aRequiredSection.aValidatedSection": {
+ "class": "Section",
+ "description": "A validated section.",
+ "validations": "org.apache.tamaya.model.validation.MaxItemValidator?max=3"
+ }
+ }
+}
+
+
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5343410/modules/model/src/test/resources/examples/configmodel.properties
----------------------------------------------------------------------
diff --git a/modules/model/src/test/resources/examples/configmodel.properties b/modules/model/src/test/resources/examples/configmodel.properties
new file mode 100644
index 0000000..4e69549
--- /dev/null
+++ b/modules/model/src/test/resources/examples/configmodel.properties
@@ -0,0 +1,96 @@
+#
+# 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.
+#
+
+###################################################################################
+# Example of a configuration metamodel expressed via properties.
+####################################################################################
+
+# Metamodel information
+{model}.__provider=ConfigModel Extension
+
+# reusable parameter definition, referenceable as MyNumber
+{model}.MyNumber.class=Parameter
+{model}.MyNumber.type=Integer
+{model}.MyNumber.description=a (reusable) number type parameter (optional)
+
+####################################################################################
+# Description of Configuration Sections (minimal, can be extended by other modules).
+# By default its interpreted as a section !
+####################################################################################
+
+# a (section)
+{model}.a.class=Section
+{model}.a.params2.class=Parameter
+{model}.a.params2.type=String
+{model}.a.params2.required=true
+{model}.a.params2.description=a required parameter
+
+{model}.a.paramInt.class=Parameter
+{model}.a.paramInt.type=ref:MyNumber
+{model}.a.paramInt.description=an optional parameter (default)
+
+{model}.a._number.class=Parameter
+{model}.a._number.type=Integer
+{model}.a._number.deprecated=true
+{model}.a._number.mappedTo=a.paramInt
+
+# a.b.c (section)
+{model}.a.b.c.class=Section
+{model}.a.b.c.description=Just a test section
+
+# a.b.c.aRequiredSection (section)
+{model}.a.b.c.aRequiredSection.class=Section
+{model}.a.b.c.aRequiredSection.required=true
+{model}.a.b.c.aRequiredSection.description=A section containing required parameters is called a required section.\
+ Sections can also explicitly be defined to be required, but without\
+ specifying the paramteres to be contained.,
+
+# a.b.c.aRequiredSection.subsection (section)
+{model}.a.b.c.aRequiredSection.subsection.class=Section
+
+{model}.a.b.c.aRequiredSection.subsection.param0.class=Parameter
+{model}.a.b.c.aRequiredSection.subsection.param0.type=String
+{model}.a.b.c.aRequiredSection.subsection.param0.description=a minmally documented String parameter
+# A minmal String parameter
+{model}.a.b.c.aRequiredSection.subsection.param00.class=Parameter
+{model}.a.b.c.aRequiredSection.subsection.param00.type=String
+
+# a.b.c.aRequiredSection.subsection (section)
+{model}.a.b.c.aRequiredSection.subsection.param1.class=Parameter
+{model}.a.b.c.aRequiredSection.subsection.param1.type = String
+{model}.a.b.c.aRequiredSection.subsection.param1.required = true
+{model}.a.b.c.aRequiredSection.subsection.intParam.class=Parameter
+{model}.a.b.c.aRequiredSection.subsection.intParam.type = Integer
+{model}.a.b.c.aRequiredSection.subsection.intParam.description=an optional parameter (default)
+
+# a.b.c.aRequiredSection.nonempty-subsection (section)
+{model}.a.b.c.aRequiredSection.nonempty-subsection.class=Section
+{model}.a.b.c.aRequiredSection.nonempty-subsection.required=true
+
+# a.b.c.aRequiredSection.optional-subsection (section)
+{model}.a.b.c.aRequiredSection.optional-subsection.class=Section
+
+# a.b.c.aValidatedSection (section)
+{model}.a.b.c.aValidatedSection.class=Section
+{model}.a.b.c.aValidatedSection.description=A validated section.
+{model}.a.b.c.aValidatedSection.validations=org.apache.tamaya.model.TestValidator
+
+
+
+
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5343410/modules/model/src/test/resources/examples/configmodel.xml
----------------------------------------------------------------------
diff --git a/modules/model/src/test/resources/examples/configmodel.xml b/modules/model/src/test/resources/examples/configmodel.xml
new file mode 100644
index 0000000..dd78c05
--- /dev/null
+++ b/modules/model/src/test/resources/examples/configmodel.xml
@@ -0,0 +1,97 @@
+<!--
+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.
+-->
+
+<!--################################################################################
+# Example of a configuration metamodel expressed via YAML(tm).
+# Structure is shown through indentation (one or more spaces).
+# Sequence items are denoted by a dash,
+# key value pairs within a map are separated by a colon.
+#################################################################################-->
+
+<!--################################################################################
+# Metamodel information
+#################################################################################-->
+
+<configuration>
+ <section name="{model}" __provider="ConfigModel Extension" version="1.0" __release-date="2001-01-23"
+ author="Anatole Tresch">
+ <!-- model-format>alternate format reader type</model-format -->
+ <__description>Late afternoon is best.
+ Backup contact is Nancy.
+ </__description>
+
+ <!--################################################################################
+ # Description of Configuration Sections (minimal, can be extended by other modules).
+ #################################################################################-->
+ <section name="a">
+ <param name="params">
+ <type>String</type>
+ <required>true</required>
+ <description>a required parameter</description>
+ </param>
+ <param name="paramInt">
+ <ref>MyNumber</ref>
+ <required>true</required>
+ <description>an optional parameter (default)</description>
+ </param>
+ <param name="_number">
+ <type>Integer</type>
+ <deprecated>true</deprecated>
+ <mappedto>a.paramInt</mappedto>
+ </param>
+ <section name="b.c">
+ <description>Just a test section.</description>
+ <section name="aRequiredSection">
+ <description>A section containing required parameters is called a required section.
+ Sections can also explicitly be defined to be required, but without
+ specifying the paramteres to be contained.
+ </description>
+ </section>
+ </section>
+ </section>
+
+ <section name="a.b.c.aRequiredSection.subsection">
+ <param name="param0" type="String">a minmally documented String parameter</param>
+ <!-- # A minmally defined String parameter -->
+ <param name="param00">
+ <type>String</type>
+ </param>
+ <param name="param1">
+ <type>String</type>
+ <required>true</required>
+ <description>a required parameter</description>description>
+ </param>
+ <param name="intParam">
+ <type>Integer</type>
+ <description>an optional parameter (default)</description>
+ </param>
+ <section name="b.c">
+ <description>Just a test section.</description>
+ </section>
+ </section>
+ <section name="a.b.c.aRequiredSection.nonempty-subsection">
+ <required>true</required>
+ </section>
+ <section name="a.b.c.aRequiredSection.optional-subsection"/>
+ <section name="a.b.c.aRequiredSection.aValidatedSection">
+ <validations>org.apache.tamaya.model.validation.MaxItemValidator?max=3"</validations>
+ <description>A validation section.</description>
+ </section>
+ </section>
+</configuration>
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5343410/modules/model/src/test/resources/examples/configmodel.yaml
----------------------------------------------------------------------
diff --git a/modules/model/src/test/resources/examples/configmodel.yaml b/modules/model/src/test/resources/examples/configmodel.yaml
new file mode 100644
index 0000000..a59246a
--- /dev/null
+++ b/modules/model/src/test/resources/examples/configmodel.yaml
@@ -0,0 +1,106 @@
+#
+# 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.
+#
+
+##################################################################################
+# Example of a configuration metamodel expressed via YAML(tm).
+# Structure is shown through indentation (one or more spaces).
+# Sequence items are denoted by a dash,
+# key value pairs within a map are separated by a colon.
+####################################################################################
+
+####################################################################################
+# Metamodel information
+####################################################################################
+{model}: {
+ __name : 'testmodel',
+ __provider : 'ValidationProviderSpi Extension',
+ __version : '1.0',
+ __release-date : 2001-01-23,
+ __author : 'Anatole Tresch',
+ # model-format: 'alternate format reader type'
+ __description: >
+ Late afternoon is best.
+ Backup contact is Nancy.
+}
+
+####################################################################################
+# Description of Configuration Sections (minimal, can be extended by other modules).
+####################################################################################
+---
+{model}.a.params2: {
+ type : 'String',
+ required : true,
+ description : 'a required parameter',
+ paramInt: 'Integer', 'an optional parameter (default)',
+}
+---
+{model}.a.paramInt: {
+ type : 'Integer',
+ description : 'an optional parameter (default)',
+}
+---
+{model}.a.b.c: {
+ description: 'Just a test section.'
+}
+---
+{model}.a.b.c.aRequiredSection: {
+ required: true,
+ description: |
+ A section containing required parameters is called a required section.
+ Sections can also explicitly be defined to be required, but without
+ specifying the paramteres to be contained.,
+}
+---
+{model}.a.b.c.aRequiredSection.subsection: {
+ param0: {
+ type: 'String',
+ description: 'a minmally documented String parameter}'
+ }, ,
+ param00:{
+ type: 'String' # A minmally defined String parameter
+ },
+ param1: {
+ tpye: 'String',
+ required: true,
+ description: 'a required parameter'
+ },
+ intParam: {
+ type: 'Integer',
+ description: 'an optional parameter (default)'
+ }
+}
+...
+
+---
+{model}.a.b.c.aRequiredSection.nonempty-subsection: {
+ required: true
+}
+...
+
+---
+{model}.a.b.c.aRequiredSection.optional-subsection: {}
+...
+
+---
+{model}.a.b.c.aRequiredSection.aValidatedSection: {
+ description: 'A validation section.',
+ validations: 'org.apache.tamaya.model.validation.MaxItemValidator?max=3'
+}
+
+
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5343410/modules/pom.xml
----------------------------------------------------------------------
diff --git a/modules/pom.xml b/modules/pom.xml
index 8dc401d..638fc88 100644
--- a/modules/pom.xml
+++ b/modules/pom.xml
@@ -40,6 +40,9 @@ under the License.
<module>json</module>
<module>resolver</module>
<module>resources</module>
+ <module>functions</module>
+ <module>model</module>
+ <module>management</module>
</modules>
<build>
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5343410/sandbox/functions/pom.xml
----------------------------------------------------------------------
diff --git a/sandbox/functions/pom.xml b/sandbox/functions/pom.xml
deleted file mode 100644
index 06dd0ed..0000000
--- a/sandbox/functions/pom.xml
+++ /dev/null
@@ -1,52 +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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.tamaya.ext</groupId>
- <artifactId>tamaya-sandbox</artifactId>
- <version>0.1-incubating-SNAPSHOT</version>
- <relativePath>..</relativePath>
- </parent>
- <artifactId>tamaya-functions</artifactId>
- <name>Apache Tamaya Common Functional Extensions</name>
- <packaging>jar</packaging>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.tamaya</groupId>
- <artifactId>tamaya-api</artifactId>
- <version>${project.version}</version>
- </dependency>
- <!-- Test scope only, do not create a code dependency! -->
- <dependency>
- <groupId>org.apache.tamaya</groupId>
- <artifactId>tamaya-core</artifactId>
- <version>${project.version}</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- </dependency>
- </dependencies>
-</project>
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5343410/sandbox/functions/src/main/java/org/apache/tamaya/functions/ConfigurationFunctions.java
----------------------------------------------------------------------
diff --git a/sandbox/functions/src/main/java/org/apache/tamaya/functions/ConfigurationFunctions.java b/sandbox/functions/src/main/java/org/apache/tamaya/functions/ConfigurationFunctions.java
deleted file mode 100644
index 9a588fc..0000000
--- a/sandbox/functions/src/main/java/org/apache/tamaya/functions/ConfigurationFunctions.java
+++ /dev/null
@@ -1,238 +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.functions;
-
-import org.apache.tamaya.ConfigOperator;
-import org.apache.tamaya.ConfigQuery;
-import org.apache.tamaya.Configuration;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.TreeSet;
-import java.util.function.BiPredicate;
-import java.util.function.Function;
-import java.util.function.Predicate;
-import java.util.stream.Collectors;
-
-/**
- * Accessor that provides useful functions along with configuration.
- */
-public final class ConfigurationFunctions {
- /**
- * Private singleton constructor.
- */
- private ConfigurationFunctions() {
- }
-
- /**
- * Creates a ConfigOperator that creates a Configuration containing only keys
- * that are contained in the given area (non recursive). Hereby
- * the area key is stripped away fromMap the resulting key.
- *
- * @param filter the filter, not null
- * @return the area configuration, with the areaKey stripped away.
- */
- public static ConfigOperator filter(BiPredicate<String, String> filter) {
- return cfg -> new FilteredConfiguration(cfg, filter, null);
- }
-
- /**
- * Creates a ConfigOperator that creates a Configuration with keys mapped as
- * defined by the given keyMapper.
- *
- * @param keyMapper the keyMapper, not null
- * @return the area configuration, with the areaKey stripped away.
- */
- public static ConfigOperator map(Function<String, String> keyMapper) {
- return cfg -> new MappedConfiguration(cfg, keyMapper, null);
- }
-
-
- /**
- * Creates a ConfigOperator that creates a Configuration containing only keys
- * that are contained in the given area (non recursive). Hereby
- * the area key is stripped away fromMap the resulting key.
- *
- * @param areaKey the area key, not null
- * @return the area configuration, with the areaKey stripped away.
- */
- public static ConfigOperator area(String areaKey) {
- return area(areaKey, true);
- }
-
- /**
- * Creates a ConfigOperator that creates a Configuration containing only keys
- * that are contained in the given area (non recursive).
- *
- * @param areaKey the area key, not null
- * @param stripKeys if set to true, the area key is stripped away fromMap the resulting key.
- * @return the area configuration, with the areaKey stripped away.
- */
- public static ConfigOperator area(String areaKey, boolean stripKeys) {
- return config -> {
- Configuration filtered = new FilteredConfiguration(config,
- (k,v) -> isKeyInArea(k, areaKey), "area: " + areaKey);
- if(stripKeys){
- return new MappedConfiguration(filtered, k -> k.substring(areaKey.length() + 1), "stripped");
- }
- return filtered;
- };
- }
-
- /**
- * Calculates the current area key and compares it with the given key.
- *
- * @param key the fully qualified entry key, not null
- * @param areaKey the area key, not null
- * @return true, if the entry is exact in this area
- */
- public static boolean isKeyInArea(String key, String areaKey) {
- int lastIndex = key.lastIndexOf('.');
- String curAreaKey = lastIndex > 0 ? key.substring(0, lastIndex) : "";
- return curAreaKey.equals(areaKey);
- }
-
- /**
- * Calculates the current area key and compares it with the given area keys.
- *
- * @param key the fully qualified entry key, not null
- * @param areaKeys the area keys, not null
- * @return true, if the entry is exact in this area
- */
- public static boolean isKeyInAreas(String key, String... areaKeys) {
- for(String areaKey:areaKeys){
- if(isKeyInArea(key, areaKey)){
- return true;
- }
- }
- return false;
- }
-
- /**
- * Return a query to evaluate the set with all fully qualifies area names. This method should return the areas as accurate as possible,
- * but may not provide a complete set of areas that are finally accessible, especially when the underlying storage
- * does not support key iteration.
- *
- * @return s set with all areas, never {@code null}.
- */
- public static ConfigQuery<Set<String>> areas() {
- return config -> {
- final Set<String> areas = new HashSet<>();
- config.getProperties().keySet().forEach(s -> {
- int index = s.lastIndexOf('.');
- if (index > 0) {
- areas.add(s.substring(0, index));
- } else {
- areas.add("<root>");
- }
- });
- return areas;
- };
- }
-
- /**
- * Return a query to evaluate the set with all fully qualified area names, containing the transitive closure also including all
- * subarea names, regardless if properties are accessible or not. This method should return the areas as accurate
- * as possible, but may not provide a complete set of areas that are finally accessible, especially when the
- * underlying storage does not support key iteration.
- *
- * @return s set with all transitive areas, never {@code null}.
- */
- public static ConfigQuery<Set<String>> transitiveAreas() {
- return config -> {
- final Set<String> transitiveAreas = new HashSet<>();
- config.query(areas()).forEach(s -> {
- int index = s.lastIndexOf('.');
- if (index < 0) {
- transitiveAreas.add("<root>");
- } else {
- while (index > 0) {
- s = s.substring(0, index);
- transitiveAreas.add(s);
- index = s.lastIndexOf('.');
- }
- }
- });
- return transitiveAreas;
- };
- }
-
- /**
- * Return a query to evaluate the set with all fully qualified area names, containing only the
- * areas that match the predicate and have properties attached. This method should return the areas as accurate as possible,
- * but may not provide a complete set of areas that are finally accessible, especially when the underlying storage
- * does not support key iteration.
- *
- * @param predicate A predicate to deternine, which areas should be returned, not {@code null}.
- * @return s set with all areas, never {@code null}.
- */
- public static ConfigQuery<Set<String>> areas(final Predicate<String> predicate) {
- return config ->
- config.query(areas()).stream().filter(predicate).collect(Collectors.toCollection(TreeSet::new));
- }
-
- /**
- * Return a query to evaluate the set with all fully qualified area names, containing the transitive closure also including all
- * subarea names, regardless if properties are accessible or not. This method should return the areas as accurate as possible,
- * but may not provide a complete set of areas that are finally accessible, especially when the underlying storage
- * does not support key iteration.
- *
- * @param predicate A predicate to deternine, which areas should be returned, not {@code null}.
- * @return s set with all transitive areas, never {@code null}.
- */
- public static ConfigQuery<Set<String>> transitiveAreas(Predicate<String> predicate) {
- return config ->
- config.query(transitiveAreas()).stream().filter(predicate).collect(Collectors.toCollection(TreeSet::new));
- }
-
-
- /**
- * Creates a ConfigOperator that creates a Configuration containing only keys
- * that are contained in the given area (recursive). Hereby
- * the area key is stripped away fromMap the resulting key.
- *
- * @param areaKeys the area keys, not null
- * @return the area configuration, with the areaKey stripped away.
- */
- public static ConfigOperator areasRecursive(String... areaKeys) {
- return areaRecursive(true, areaKeys);
- }
-
- /**
- * Creates a ConfigOperator that creates a Configuration containing only keys
- * that are contained in the given area (recursive).
- *
- * @param areaKeys the area keys, not null
- * @param stripKeys if set to true, the area key is stripped away fromMap the resulting key.
- * @return the area configuration, with the areaKey stripped away.
- */
- public static ConfigOperator areaRecursive(boolean stripKeys, String... areaKeys) {
- return config -> {
- Configuration filtered = new FilteredConfiguration(config,
- (k,v) -> isKeyInAreas(k, areaKeys), "areas: " + Arrays.toString(areaKeys));
- if(stripKeys){
- return new MappedConfiguration(filtered, PropertySourceFunctions::stripAreaKeys, "stripped");
- }
- return filtered;
- };
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5343410/sandbox/functions/src/main/java/org/apache/tamaya/functions/FilteredConfiguration.java
----------------------------------------------------------------------
diff --git a/sandbox/functions/src/main/java/org/apache/tamaya/functions/FilteredConfiguration.java b/sandbox/functions/src/main/java/org/apache/tamaya/functions/FilteredConfiguration.java
deleted file mode 100644
index 2f92331..0000000
--- a/sandbox/functions/src/main/java/org/apache/tamaya/functions/FilteredConfiguration.java
+++ /dev/null
@@ -1,70 +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.functions;
-
-import org.apache.tamaya.Configuration;
-import org.apache.tamaya.TypeLiteral;
-
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.function.BiPredicate;
-import java.util.stream.Collectors;
-
-/**
- * Configuration that filters part of the entries defined by a filter predicate.
- */
-class FilteredConfiguration implements Configuration {
-
- private final Configuration baseConfiguration;
- private final BiPredicate<String, String> filter;
- private String filterType;
-
- FilteredConfiguration(Configuration baseConfiguration, BiPredicate<String, String> filter, String filterType) {
- this.baseConfiguration = Objects.requireNonNull(baseConfiguration);
- this.filter = Objects.requireNonNull(filter);
- this.filterType = Optional.ofNullable(filterType).orElse(this.filter.toString());
- }
-
- @Override
- public <T> T get(String key, TypeLiteral<T> type) {
- String value = baseConfiguration.get(key);
- if (filter.test(key, value)) {
- return baseConfiguration.get(key, type);
- }
- return null;
- }
-
- @Override
- public Map<String, String> getProperties() {
- return baseConfiguration.getProperties().entrySet().stream().filter(
- en -> filter.test(en.getKey(), en.getValue())).collect(Collectors.toMap(
- en -> en.getKey(), en -> en.getValue()
- ));
- }
-
- @Override
- public String toString() {
- return "FilteredConfiguration{" +
- "baseConfiguration=" + baseConfiguration +
- ", filter=" + filter +
- '}';
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5343410/sandbox/functions/src/main/java/org/apache/tamaya/functions/FilteredPropertySource.java
----------------------------------------------------------------------
diff --git a/sandbox/functions/src/main/java/org/apache/tamaya/functions/FilteredPropertySource.java b/sandbox/functions/src/main/java/org/apache/tamaya/functions/FilteredPropertySource.java
deleted file mode 100644
index 38c29dd..0000000
--- a/sandbox/functions/src/main/java/org/apache/tamaya/functions/FilteredPropertySource.java
+++ /dev/null
@@ -1,66 +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.functions;
-
-import org.apache.tamaya.spi.PropertySource;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
-import java.util.function.Predicate;
-
-class FilteredPropertySource implements PropertySource {
-
- private PropertySource baseSource;
- private Predicate<String> filter;
-
- public FilteredPropertySource(PropertySource baseSource, Predicate<String> filter){
- this.baseSource = Objects.requireNonNull(baseSource);
- this.filter = Objects.requireNonNull(filter);
- }
-
- @Override
- public int getOrdinal(){
- return baseSource.getOrdinal();
- }
-
- @Override
- public String getName() {
- return baseSource.getName();
- }
-
- @Override
- public Map<String,String> getProperties(){
- final Map<String,String> result = new HashMap<>();
- this.baseSource.getProperties().entrySet().forEach(e -> {
- if(filter.test(e.getKey())){
- result.put(e.getKey(), e.getValue());
- }
- });
- return result;
- }
-
- @Override
- public String toString() {
- return "FilteredPropertySource{" +
- "baseSource=" + baseSource +
- ", filter=" + filter +
- '}';
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5343410/sandbox/functions/src/main/java/org/apache/tamaya/functions/MappedConfiguration.java
----------------------------------------------------------------------
diff --git a/sandbox/functions/src/main/java/org/apache/tamaya/functions/MappedConfiguration.java b/sandbox/functions/src/main/java/org/apache/tamaya/functions/MappedConfiguration.java
deleted file mode 100644
index df1f43c..0000000
--- a/sandbox/functions/src/main/java/org/apache/tamaya/functions/MappedConfiguration.java
+++ /dev/null
@@ -1,66 +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.functions;
-
-import org.apache.tamaya.Configuration;
-import org.apache.tamaya.TypeLiteral;
-
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.function.BiPredicate;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
-/**
- * Configuration that filters part of the entries defined by a filter predicate.
- */
-class MappedConfiguration implements Configuration {
-
- private final Configuration baseConfiguration;
- private final Function<String, String> keyMapper;
- private final String mapType;
-
- MappedConfiguration(Configuration baseConfiguration, Function<String, String> keyMapper, String mapType) {
- this.baseConfiguration = Objects.requireNonNull(baseConfiguration);
- this.keyMapper = Objects.requireNonNull(keyMapper);
- this.mapType = Optional.ofNullable(mapType).orElse(this.keyMapper.toString());
- }
-
- @Override
- public <T> T get(String key, TypeLiteral<T> type) {
- return baseConfiguration.get(this.keyMapper.apply(key), type);
- }
-
- @Override
- public Map<String, String> getProperties() {
- return baseConfiguration.getProperties().entrySet().stream().collect(Collectors.toMap(
- en -> keyMapper.apply(en.getKey()), en -> en.getValue()
- ));
- }
-
- @Override
- public String toString() {
- return "FilteredConfiguration{" +
- "baseConfiguration=" + baseConfiguration +
- ", mapping=" + mapType +
- '}';
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5343410/sandbox/functions/src/main/java/org/apache/tamaya/functions/MappedPropertySource.java
----------------------------------------------------------------------
diff --git a/sandbox/functions/src/main/java/org/apache/tamaya/functions/MappedPropertySource.java b/sandbox/functions/src/main/java/org/apache/tamaya/functions/MappedPropertySource.java
deleted file mode 100644
index 8491fa6..0000000
--- a/sandbox/functions/src/main/java/org/apache/tamaya/functions/MappedPropertySource.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.functions;
-
-import org.apache.tamaya.spi.PropertySource;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
-import java.util.function.UnaryOperator;
-
-/**
- * PropertySource implementation that maps certain parts (defined by an {@code UnaryOperator<String>}) to alternate areas.
- */
-class MappedPropertySource implements PropertySource {
-
- private static final long serialVersionUID = 8690637705511432083L;
-
- /** The mapping operator. */
- private UnaryOperator<String> keyMapper;
- /** The base configuration. */
- private PropertySource propertySource;
-
- /**
- * Creates a new instance.
- * @param config the base configuration, not null
- * @param keyMapper The mapping operator, not null
- */
- public MappedPropertySource(PropertySource config, UnaryOperator<String> keyMapper) {
- this.propertySource = Objects.requireNonNull(config);
- this.keyMapper = Objects.requireNonNull(keyMapper);
- }
-
- @Override
- public int getOrdinal(){
- return this.propertySource.getOrdinal();
- }
-
- @Override
- public String getName(){
- return this.propertySource.getName()+"[mapped]";
- }
-
- @Override
- public Map<String, String> getProperties() {
- Map<String, String> result = new HashMap<>();
- Map<String, String> map = this.propertySource.getProperties();
- map.forEach((k,v) -> {
- String targetKey = keyMapper.apply(k);
- if(targetKey!=null){
- result.put(targetKey, v);
- }
- });
- return result;
- }
-
- @Override
- public String get(String key){
- return getProperties().get(key);
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5343410/sandbox/functions/src/main/java/org/apache/tamaya/functions/MetaEnrichedPropertySource.java
----------------------------------------------------------------------
diff --git a/sandbox/functions/src/main/java/org/apache/tamaya/functions/MetaEnrichedPropertySource.java b/sandbox/functions/src/main/java/org/apache/tamaya/functions/MetaEnrichedPropertySource.java
deleted file mode 100644
index 6ef32c3..0000000
--- a/sandbox/functions/src/main/java/org/apache/tamaya/functions/MetaEnrichedPropertySource.java
+++ /dev/null
@@ -1,80 +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.functions;
-
-import org.apache.tamaya.spi.PropertySource;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
-
-/**
- * Configuration that filters part of the entries defined by a filter predicate.
- */
-class MetaEnrichedPropertySource implements PropertySource {
-
- private final PropertySource basePropertySource;
- private final Map<String, String> metaInfo;
-
- MetaEnrichedPropertySource(PropertySource basePropertySource, Map<String, String> metaInfo) {
- this.basePropertySource = Objects.requireNonNull(basePropertySource);
- this.metaInfo = Objects.requireNonNull(metaInfo);
- }
-
- // [meta:origin]a.b.c
- @Override
- public String get(String key) {
- if(key.startsWith("[meta:")){
- key = key.substring(6);
- int index = key.indexOf(']');
- String metaKey = key.substring(0,index);
- String entryKey = key.substring(index+1);
- String value = basePropertySource.get(entryKey);
- if(value!=null) {
- return metaInfo.get(metaKey);
- }
- }
- return basePropertySource.get(key);
- }
-
- @Override
- public String getName() {
- return basePropertySource.getName();
- }
-
- @Override
- public Map<String, String> getProperties() {
- Map<String, String> baseProperties = basePropertySource.getProperties();
- Map<String, String> allProperties = new HashMap<>(baseProperties);
- baseProperties.forEach((k,v) -> {
- this.metaInfo.forEach(
- (mk, mv) -> allProperties.put("[meta:"+mk+']'+k, mv));
- });
- return allProperties;
- }
-
- @Override
- public String toString() {
- return "MetaEnrichedPropertySource{" +
- "basePropertySource=" + basePropertySource +
- ", metaInfo=" + metaInfo +
- '}';
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5343410/sandbox/functions/src/main/java/org/apache/tamaya/functions/PropertySourceFunctions.java
----------------------------------------------------------------------
diff --git a/sandbox/functions/src/main/java/org/apache/tamaya/functions/PropertySourceFunctions.java b/sandbox/functions/src/main/java/org/apache/tamaya/functions/PropertySourceFunctions.java
deleted file mode 100644
index 52c306a..0000000
--- a/sandbox/functions/src/main/java/org/apache/tamaya/functions/PropertySourceFunctions.java
+++ /dev/null
@@ -1,226 +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.functions;
-
-import org.apache.tamaya.spi.PropertySource;
-
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeSet;
-import java.util.function.Predicate;
-import java.util.stream.Collectors;
-
-/**
- * Accessor that provides useful functions along with configuration.
- */
-public final class PropertySourceFunctions {
- /**
- * Private singleton constructor.
- */
- private PropertySourceFunctions() {
- }
-
- /**
- * Creates a ConfigOperator that creates a Configuration containing only keys
- * that are contained in the given area (non recursive). Hereby
- * the area key is stripped away fromMap the resulting key.
- * <p>
- * Metadata is added only for keys that are present on the original configuration.
- * They are added in the following format:
- * <pre>
- * Given are
- * 1) a configuration with two entries: entry1, entry 2
- * 2) metadata as metaKey1=metaValue1, metaKey2=metaValue2
- *
- * The final configuration will look like:
- *
- * entry1=entry1Value;
- * entry2=entry2Value;
- * [meta:metaKey1]entry1=metaValue1
- * [meta:metaKey2]entry1=metaValue2
- * [meta:metaKey1]entry2=metaValue1
- * [meta:metaKey2]entry2=metaValue2
- * </pre>
- *
- * This mechanism allows to add meta information such as origin, sensitivity, to all keys of a current
- * PropertySource or Configuration. If done on multiple PropertySources that are combined the corresponding
- * values are visible in synch with the values visible.
- *
- * @param propertySource the base propertySource, not null.
- * @param metaData the metaData to be added, not null
- * @return the metadata enriched configuration, not null.
- */
- public static PropertySource addMetaData(PropertySource propertySource, Map<String,String> metaData) {
- return new MetaEnrichedPropertySource(propertySource, metaData);
- }
-
- /**
- * Calculates the current area key and compares it with the given key.
- *
- * @param key the fully qualified entry key, not null
- * @param areaKey the area key, not null
- * @return true, if the entry is exact in this area
- */
- public static boolean isKeyInArea(String key, String areaKey) {
- int lastIndex = key.lastIndexOf('.');
- String curAreaKey = lastIndex > 0 ? key.substring(0, lastIndex) : "";
- return curAreaKey.equals(areaKey);
- }
-
- /**
- * Calculates the current area key and compares it with the given area keys.
- *
- * @param key the fully qualified entry key, not null
- * @param areaKeys the area keys, not null
- * @return true, if the entry is exact in this area
- */
- public static boolean isKeyInAreas(String key, String... areaKeys) {
- for(String areaKey:areaKeys){
- if(isKeyInArea(key, areaKey)){
- return true;
- }
- }
- return false;
- }
-
- /**
- * Return a query to evaluate the set with all fully qualifies area names. This method should return the areas as accurate as possible,
- * but may not provide a complete set of areas that are finally accessible, especially when the underlying storage
- * does not support key iteration.
- *
- * @return s set with all areas, never {@code null}.
- */
- public static Set<String> areas(Map<String,String> map) {
- final Set<String> areas = new HashSet<>();
- map.keySet().forEach(s -> {
- int index = s.lastIndexOf('.');
- if (index > 0) {
- areas.add(s.substring(0, index));
- } else {
- areas.add("<root>");
- }
- });
- return areas;
- }
-
- /**
- * Return a query to evaluate the set with all fully qualified area names, containing the transitive closure also including all
- * subarea names, regardless if properties are accessible or not. This method should return the areas as accurate
- * as possible, but may not provide a complete set of areas that are finally accessible, especially when the
- * underlying storage does not support key iteration.
- *
- * @return s set with all transitive areas, never {@code null}.
- */
- public static Set<String> transitiveAreas(Map<String,String> map) {
- final Set<String> transitiveAreas = new HashSet<>();
- areas(map).forEach(s -> {
- int index = s.lastIndexOf('.');
- if (index < 0) {
- transitiveAreas.add("<root>");
- } else {
- while (index > 0) {
- s = s.substring(0, index);
- transitiveAreas.add(s);
- index = s.lastIndexOf('.');
- }
- }
- });
- return transitiveAreas;
- }
-
- /**
- * Return a query to evaluate the set with all fully qualified area names, containing only the
- * areas that match the predicate and have properties attached. This method should return the areas as accurate as possible,
- * but may not provide a complete set of areas that are finally accessible, especially when the underlying storage
- * does not support key iteration.
- *
- * @param predicate A predicate to deternine, which areas should be returned, not {@code null}.
- * @return s set with all areas, never {@code null}.
- */
- public static Set<String> areas(Map<String,String> map, final Predicate<String> predicate) {
- return
- areas(map).stream().filter(predicate).collect(Collectors.toCollection(TreeSet::new));
- }
-
- /**
- * Return a query to evaluate the set with all fully qualified area names, containing the transitive closure also including all
- * subarea names, regardless if properties are accessible or not. This method should return the areas as accurate as possible,
- * but may not provide a complete set of areas that are finally accessible, especially when the underlying storage
- * does not support key iteration.
- *
- * @param predicate A predicate to deternine, which areas should be returned, not {@code null}.
- * @return s set with all transitive areas, never {@code null}.
- */
- public static Set<String> transitiveAreas(Map<String,String> map, Predicate<String> predicate) {
- return
- transitiveAreas(map).stream().filter(predicate).collect(Collectors.toCollection(TreeSet::new));
- }
-
-
- /**
- * Creates a ConfigOperator that creates a Configuration containing only keys
- * that are contained in the given area (recursive). Hereby
- * the area key is stripped away fromMap the resulting key.
- *
- * @param areaKeys the area keys, not null
- * @return the area configuration, with the areaKey stripped away.
- */
- public static Map<String,String> areasRecursive(Map<String,String> map, String... areaKeys) {
- return areaRecursive(map, true, areaKeys);
- }
-
- /**
- * Creates a ConfigOperator that creates a Configuration containing only keys
- * that are contained in the given area (recursive).
- *
- * @param areaKeys the area keys, not null
- * @param stripKeys if set to true, the area key is stripped away fromMap the resulting key.
- * @return the area configuration, with the areaKey stripped away.
- */
- public static Map<String,String> areaRecursive(Map<String,String> map, boolean stripKeys, String... areaKeys) {
- if(stripKeys) {
- return map.entrySet().stream().filter(
- (e) -> isKeyInAreas(e.getKey(), areaKeys))
- .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
- }
- else {
- return map.entrySet().stream().filter(
- (e) -> isKeyInAreas(e.getKey(), areaKeys))
- .collect(Collectors.toMap(en -> stripAreaKeys(en.getKey(), areaKeys), Map.Entry::getValue));
- }
- }
-
- /**
- * Strips the area key of the given absolute key, if it is one of the areaKeys passed.
- * @param key the current key, not null.
- * @param areaKeys the areaKeys, not null.
- * @return the stripped key, or the original key (if no area was matching).
- */
- static String stripAreaKeys(String key, String... areaKeys) {
- for(String areaKey:areaKeys) {
- if(key.startsWith(areaKey+'.')) {
- return key.substring(areaKey.length() + 1);
- }
- }
- return key;
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5343410/sandbox/functions/src/main/java/org/apache/tamaya/functions/ValueFilteredPropertySource.java
----------------------------------------------------------------------
diff --git a/sandbox/functions/src/main/java/org/apache/tamaya/functions/ValueFilteredPropertySource.java b/sandbox/functions/src/main/java/org/apache/tamaya/functions/ValueFilteredPropertySource.java
deleted file mode 100644
index 3180b0c..0000000
--- a/sandbox/functions/src/main/java/org/apache/tamaya/functions/ValueFilteredPropertySource.java
+++ /dev/null
@@ -1,75 +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.functions;
-
-import org.apache.tamaya.spi.PropertySource;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Optional;
-import java.util.function.BiFunction;
-
-/**
- * Property source which filters any key/values dynamically.
- */
-class ValueFilteredPropertySource implements PropertySource{
-
- private String name;
- private BiFunction<String, String, String> valueFilter;
- private PropertySource source;
-
- public ValueFilteredPropertySource(String name, BiFunction<String, String, String> valueFilter, PropertySource current) {
- this.name = Optional.ofNullable(name).orElse("<valueFiltered> -> name="+current.getName()+", valueFilter="+valueFilter.toString());
- }
-
- @Override
- public int getOrdinal() {
- return source.getOrdinal();
- }
-
- @Override
- public String getName() {
- return name;
- }
-
- @Override
- public String get(String key) {
- String value = this.source.get(key);
- if(value!=null) {
- return valueFilter.apply(key, value);
- }
- return null;
- }
-
- @Override
- public Map<String, String> getProperties() {
- Map<String, String> map = new HashMap<>(source.getProperties());
- map.replaceAll(valueFilter);
- return map;
- }
-
- @Override
- public String toString() {
- return "ValueFilteredPropertySource{" +
- "source=" + source.getName() +
- ", name='" + name + '\'' +
- ", valueFilter=" + valueFilter +
- '}';
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5343410/sandbox/functions/src/main/java/org/apache/tamaya/functions/package-info.java
----------------------------------------------------------------------
diff --git a/sandbox/functions/src/main/java/org/apache/tamaya/functions/package-info.java b/sandbox/functions/src/main/java/org/apache/tamaya/functions/package-info.java
deleted file mode 100644
index fa908e9..0000000
--- a/sandbox/functions/src/main/java/org/apache/tamaya/functions/package-info.java
+++ /dev/null
@@ -1,22 +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.
- */
-/**
- * Contains additional useful operators and queries.
- */
-package org.apache.tamaya.resource.internal;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5343410/sandbox/management/pom.xml
----------------------------------------------------------------------
diff --git a/sandbox/management/pom.xml b/sandbox/management/pom.xml
deleted file mode 100644
index 07812e1..0000000
--- a/sandbox/management/pom.xml
+++ /dev/null
@@ -1,42 +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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.tamaya.ext</groupId>
- <artifactId>tamaya-sandbox</artifactId>
- <version>0.1-incubating-SNAPSHOT</version>
- <relativePath>..</relativePath>
- </parent>
-
- <artifactId>tamaya-management</artifactId>
- <name>Apache Tamaya Modules - Java Management Extensions</name>
- <packaging>jar</packaging>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.tamaya</groupId>
- <artifactId>tamaya-api</artifactId>
- <version>${project.version}</version>
- </dependency>
- </dependencies>
-
-</project>
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5343410/sandbox/management/src/main/java/org/apache/tamaya/management/ManagedConfig.java
----------------------------------------------------------------------
diff --git a/sandbox/management/src/main/java/org/apache/tamaya/management/ManagedConfig.java b/sandbox/management/src/main/java/org/apache/tamaya/management/ManagedConfig.java
deleted file mode 100644
index db013ac..0000000
--- a/sandbox/management/src/main/java/org/apache/tamaya/management/ManagedConfig.java
+++ /dev/null
@@ -1,62 +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.management;
-
-
-import org.apache.tamaya.Configuration;
-import org.apache.tamaya.ConfigurationProvider;
-
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Created by Anatole on 24.11.2014.
- */
-public class ManagedConfig implements ManagedConfigMBean{
- @Override
- public String getConfigurationInfo() {
- return null;
- }
-
- @Override
- public Map<String, String> getConfiguration() {
- return ConfigurationProvider.getConfiguration().getProperties();
- }
-
- @Override
- public Map<String, String> getConfigurationArea(String area, boolean recursive) {
- return ConfigurationProvider.getConfiguration().with(ConfiguationFunctions.getArea(area, recursive);
- }
-
- @Override
- public Set<String> getAreas() {
- return ConfigurationProvider.getConfiguration().with(ConfiguationFunctions.getAreas();
- }
-
- @Override
- public Set<String> getTransitiveAreas() {
- return ConfigurationProvider.getConfiguration().with(ConfiguationFunctions.getTransitiveAreas();
- }
-
- @Override
- public boolean isAreaExisting(String area) {
- return false;
- }
-}
-