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/03 00:09:13 UTC
[17/18] incubator-tamaya-extensions git commit: Rewrite/adaptation
based on JSR API.
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/cfb364cd/modules/filter/src/test/java/org/apache/tamaya/filter/ProgrammableFilterTest.java
----------------------------------------------------------------------
diff --git a/modules/filter/src/test/java/org/apache/tamaya/filter/ProgrammableFilterTest.java b/modules/filter/src/test/java/org/apache/tamaya/filter/ProgrammableFilterTest.java
deleted file mode 100644
index b6e7bb7..0000000
--- a/modules/filter/src/test/java/org/apache/tamaya/filter/ProgrammableFilterTest.java
+++ /dev/null
@@ -1,149 +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.filter;
-
-import org.apache.tamaya.spi.ConfigurationContext;
-import org.apache.tamaya.spi.PropertyFilter;
-import org.apache.tamaya.spi.PropertyValue;
-import org.apache.tamaya.spisupport.DefaultConfigurationContextBuilder;
-import org.apache.tamaya.spisupport.RegexPropertyFilter;
-import org.junit.Test;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.junit.Assert.*;
-
-/**
- * Tests for {@link FilterContext}. Created by atsticks on 11.02.16.
- */
-public class ProgrammableFilterTest {
-
- private static ConfigurationContext context = new DefaultConfigurationContextBuilder().build();
- private static PropertyValue test1Property = PropertyValue.of("test1","test1","test");
- private static PropertyValue test2Property = PropertyValue.of("test2","test2","test");
- private static PropertyValue test3Property = PropertyValue.of("test.test3","test.test3","test");
-
- @Test
- public void testAddRemoveFilter() throws Exception {
- FilterContext filter = new FilterContext();
- Map<String,PropertyValue> map = new HashMap<>();
- assertEquals(filter.filterProperty(test1Property, new org.apache.tamaya.spi.FilterContext(test1Property, map, context)), test1Property);
- assertEquals(filter.filterProperty(test2Property, new org.apache.tamaya.spi.FilterContext(test2Property, map, context)), test2Property);
- assertEquals(filter.filterProperty(test3Property, new org.apache.tamaya.spi.FilterContext(test3Property, map, context)), test3Property);
- RegexPropertyFilter regexFilter = new RegexPropertyFilter();
- regexFilter.setIncludes("test\\..*");
- filter.addFilter(regexFilter);
- assertNull(filter.filterProperty(test1Property, new org.apache.tamaya.spi.FilterContext(test1Property, map, context)));
- assertNull(filter.filterProperty(test2Property, new org.apache.tamaya.spi.FilterContext(test2Property, map, context)));
- assertEquals(filter.filterProperty(test3Property, new org.apache.tamaya.spi.FilterContext(test3Property, map, context)), test3Property);
- filter.removeFilter(0);
- assertEquals(filter.filterProperty(test1Property, new org.apache.tamaya.spi.FilterContext(test1Property, map, context)), test1Property);
- assertEquals(filter.filterProperty(test2Property, new org.apache.tamaya.spi.FilterContext(test2Property, map, context)), test2Property);
- assertEquals(filter.filterProperty(test3Property, new org.apache.tamaya.spi.FilterContext(test3Property, map, context)), test3Property);
- filter.addFilter(0, regexFilter);
- assertNull(filter.filterProperty(test1Property, new org.apache.tamaya.spi.FilterContext(test1Property, map, context)));
- assertNull(filter.filterProperty(test2Property, new org.apache.tamaya.spi.FilterContext(test2Property, map, context)));
- assertEquals(filter.filterProperty(test3Property, new org.apache.tamaya.spi.FilterContext(test3Property, map, context)), test3Property);
- }
-
- @Test
- public void testClearFilters() throws Exception {
- FilterContext filter = new FilterContext();
- RegexPropertyFilter regexFilter = new RegexPropertyFilter();
- regexFilter.setIncludes("test1.*");
- Map<String,String> map = new HashMap<>();
- map.put("test1", "test1");
- map.put("test2", "test2");
- map.put("test.test3", "test.test3");
- assertEquals(filter.filterProperty(test1Property, new org.apache.tamaya.spi.FilterContext(test1Property, context)), test1Property);
- assertEquals(filter.filterProperty(test2Property, new org.apache.tamaya.spi.FilterContext(test2Property, context)), test2Property);
- assertEquals(filter.filterProperty(test3Property, new org.apache.tamaya.spi.FilterContext(test3Property, context)), test3Property);
- filter.addFilter(regexFilter);
- assertEquals(filter.filterProperty(test1Property, new org.apache.tamaya.spi.FilterContext(test1Property, context)), test1Property);
- assertNull(filter.filterProperty(test2Property, new org.apache.tamaya.spi.FilterContext(test2Property, context)));
- assertNull(filter.filterProperty(test3Property, new org.apache.tamaya.spi.FilterContext(test3Property, context)));
- filter.clearFilters();
- assertEquals(filter.filterProperty(test1Property, new org.apache.tamaya.spi.FilterContext(test1Property, context)), test1Property);
- assertEquals(filter.filterProperty(test2Property, new org.apache.tamaya.spi.FilterContext(test2Property, context)), test2Property);
- assertEquals(filter.filterProperty(test3Property, new org.apache.tamaya.spi.FilterContext(test3Property, context)), test3Property);
- }
-
- @Test
- public void testSetFilters() throws Exception {
- FilterContext filter = new FilterContext();
- RegexPropertyFilter regexFilter = new RegexPropertyFilter();
- regexFilter.setIncludes("test\\..*");
- Map<String,PropertyValue> map = new HashMap<>();
- map.put("test1", test1Property);
- map.put("test2", test1Property);
- map.put("test.test3", test3Property);
- assertEquals(filter.filterProperty(test1Property, new org.apache.tamaya.spi.FilterContext(test1Property, context)), test1Property);
- assertEquals(filter.filterProperty(test2Property, new org.apache.tamaya.spi.FilterContext(test2Property, map, context)), test2Property);
- assertEquals(filter.filterProperty(test3Property, new org.apache.tamaya.spi.FilterContext(test3Property, map, context)), test3Property);
- filter.setFilters(regexFilter);
- assertEquals(filter.filterProperty(test3Property, new org.apache.tamaya.spi.FilterContext(test3Property, map, context)), test3Property);
- assertNull(filter.filterProperty(test2Property, new org.apache.tamaya.spi.FilterContext(test2Property, map, context)));
- assertNull(filter.filterProperty(test1Property, new org.apache.tamaya.spi.FilterContext(test1Property, map, context)));
- }
-
- @Test
- public void testSetFilters1() throws Exception {
- FilterContext filter = new FilterContext();
- RegexPropertyFilter regexFilter = new RegexPropertyFilter();
- regexFilter.setIncludes("test1.*");
- Map<String,String> map = new HashMap<>();
- assertEquals(filter.filterProperty(test1Property, new org.apache.tamaya.spi.FilterContext(test1Property, context)), test1Property);
- assertEquals(filter.filterProperty(test2Property, new org.apache.tamaya.spi.FilterContext(test2Property, context)), test2Property);
- assertEquals(filter.filterProperty(test3Property, new org.apache.tamaya.spi.FilterContext(test3Property, context)), test3Property);
- filter.setFilters(Arrays.asList(new PropertyFilter[]{regexFilter}));
- assertEquals(filter.filterProperty(test1Property, new org.apache.tamaya.spi.FilterContext(test1Property, context)), test1Property);
- assertNull(filter.filterProperty(test2Property, new org.apache.tamaya.spi.FilterContext(test2Property, context)));
- assertNull(filter.filterProperty(test3Property, new org.apache.tamaya.spi.FilterContext(test3Property, context)));
- }
-
- @Test
- public void testGetFilters() throws Exception {
- FilterContext filter = new FilterContext();
- assertNotNull(filter.getFilters());
- assertTrue(filter.getFilters().isEmpty());
- RegexPropertyFilter regexFilter = new RegexPropertyFilter();
- regexFilter.setIncludes("test\\..*");
- filter.addFilter(regexFilter);
- assertNotNull(filter.getFilters());
- assertFalse(filter.getFilters().isEmpty());
- assertEquals(1, filter.getFilters().size());
- assertEquals(regexFilter, filter.getFilters().get(0));
- }
-
- @Test
- public void testToString() throws Exception {
- FilterContext filter = new FilterContext();
- assertFalse(filter.toString().contains("test\\..*"));
- assertTrue(filter.toString().contains("ProgrammableFilter"));
- assertFalse(filter.toString().contains("RegexPropertyFilter"));
- RegexPropertyFilter regexFilter = new RegexPropertyFilter();
- regexFilter.setIncludes("test\\..*");
- filter.addFilter(regexFilter);
- assertTrue(filter.toString().contains("test\\..*"));
- assertTrue(filter.toString().contains("ProgrammableFilter"));
- assertTrue(filter.toString().contains("RegexPropertyFilter"));
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/cfb364cd/modules/filter/src/test/java/org/apache/tamaya/spisupport/filter/ConfigurationFilterTest.java
----------------------------------------------------------------------
diff --git a/modules/filter/src/test/java/org/apache/tamaya/spisupport/filter/ConfigurationFilterTest.java b/modules/filter/src/test/java/org/apache/tamaya/spisupport/filter/ConfigurationFilterTest.java
new file mode 100644
index 0000000..e0f24ef
--- /dev/null
+++ b/modules/filter/src/test/java/org/apache/tamaya/spisupport/filter/ConfigurationFilterTest.java
@@ -0,0 +1,95 @@
+/*
+ * 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.spisupport.filter;
+
+import org.apache.tamaya.filter.ConfigurationFilter;
+import org.apache.tamaya.spi.ConfigValue;
+import org.apache.tamaya.spi.Filter;
+import org.junit.Test;
+
+import javax.config.Config;
+import javax.config.ConfigProvider;
+
+import static org.junit.Assert.*;
+
+/**
+ * Tests for {@link ConfigurationFilter}. Created by atsticks on 11.02.16.
+ */
+public class ConfigurationFilterTest {
+
+ @Test
+ public void testMetadataFiltered() throws Exception {
+ ConfigurationFilter.setMetadataFiltered(true);
+ assertTrue(ConfigurationFilter.isMetadataFiltered());
+ ConfigurationFilter.setMetadataFiltered(false);
+ assertFalse(ConfigurationFilter.isMetadataFiltered());
+ }
+
+ @Test
+ public void testGetFilters() throws Exception {
+ Config config = ConfigProvider.getConfig();
+ assertNotNull(ConfigurationFilter.getFilters());
+ Filter testFilter = (k,v) -> k + ":testGetSingleFilters";
+ ConfigurationFilter.addFilter(testFilter);
+ assertTrue(ConfigurationFilter.getFilters().contains(testFilter));
+ }
+
+ @Test
+ public void testFiltering() throws Exception {
+ Config config = ConfigProvider.getConfig();
+ Filter testFilter = (k,v) -> k + ":testGetMapFilters";
+ ConfigurationFilter.addFilter(testFilter);
+ assertEquals("user.home:testGetMapFilters", config.getValue("user.home", String.class));
+ ConfigurationFilter.removeFilter(testFilter);
+ assertNotSame("user.home:testGetSingleFilters", config.getValue("user.home", String.class));
+ }
+
+ @Test
+ public void testRemove() throws Exception {
+ Config config = ConfigProvider.getConfig();
+ Filter testFilter = (k,v) -> k + ":testGetMapFilters";
+ ConfigurationFilter.addFilter(testFilter);
+ assertTrue(ConfigurationFilter.getFilters().contains(testFilter));
+ ConfigurationFilter.removeFilter(testFilter);
+ assertFalse(ConfigurationFilter.getFilters().contains(testFilter));
+ }
+
+ @Test
+ public void testRemoveFilterAt0() throws Exception {
+ Config config = ConfigProvider.getConfig();
+ Filter testFilter = (k,v) -> k + ":testGetMapFilters";
+ ConfigurationFilter.addFilter(testFilter);
+ assertTrue(ConfigurationFilter.getFilters().contains(testFilter));
+ ConfigurationFilter.removeFilter(0);
+ assertFalse(ConfigurationFilter.getFilters().contains(testFilter));
+ }
+
+ @Test
+ public void testClearFilters() throws Exception {
+ Config config = ConfigProvider.getConfig();
+ Filter testFilter = (k,v) -> k + ":testGetSingleFilters";
+ ConfigurationFilter.addFilter(testFilter);
+ assertTrue(ConfigurationFilter.getFilters().contains(testFilter));
+ assertEquals("user.home:testGetSingleFilters", config.getValue("user.home", String.class));
+ ConfigurationFilter.cleanupFilterContext();
+ assertFalse(ConfigurationFilter.getFilters().contains(testFilter));
+ assertNotSame("user.home:testGetSingleFilters", config.getValue("user.home", String.class));
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/cfb364cd/modules/filter/src/test/java/org/apache/tamaya/spisupport/filter/ProgrammableFilterTest.java
----------------------------------------------------------------------
diff --git a/modules/filter/src/test/java/org/apache/tamaya/spisupport/filter/ProgrammableFilterTest.java b/modules/filter/src/test/java/org/apache/tamaya/spisupport/filter/ProgrammableFilterTest.java
new file mode 100644
index 0000000..15e54e6
--- /dev/null
+++ b/modules/filter/src/test/java/org/apache/tamaya/spisupport/filter/ProgrammableFilterTest.java
@@ -0,0 +1,183 @@
+/*
+ * 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.spisupport.filter;
+
+import org.apache.tamaya.base.filter.FilterContext;
+import org.apache.tamaya.base.filter.RegexPropertyFilter;
+import org.apache.tamaya.filter.Context;
+import org.apache.tamaya.spi.Filter;
+import org.junit.Test;
+
+import javax.config.Config;
+import javax.config.ConfigProvider;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.junit.Assert.*;
+
+/**
+ * Tests for {@link Context}. Created by atsticks on 11.02.16.
+ */
+public class ProgrammableFilterTest {
+
+ private static Config config = ConfigProvider.getConfig();
+ private static String test1Property = "test1";
+ private static String test2Property = "test2";
+ private static String test3Property = "test.test3";
+
+ @Test
+ public void testAddRemoveFilter() throws Exception {
+ Context filter = new Context();
+ Map<String,String> map = new HashMap<>();
+ FilterContext.setContext(new FilterContext(map, config));
+ assertEquals(filter.filterProperty(test1Property,test1Property), test1Property);
+ FilterContext.setContext(new FilterContext(map, config));
+ assertEquals(filter.filterProperty(test2Property, test2Property), test2Property);
+ FilterContext.setContext(new FilterContext(map, config));
+ assertEquals(filter.filterProperty(test3Property, test3Property), test3Property);
+ RegexPropertyFilter regexFilter = new RegexPropertyFilter();
+ regexFilter.setIncludes("test\\..*");
+ filter.addFilter(regexFilter);
+ FilterContext.setContext(new FilterContext(map, config));
+ assertNull(filter.filterProperty(test1Property, test1Property));
+ FilterContext.setContext(new FilterContext(map, config));
+ assertNull(filter.filterProperty(test2Property, test2Property));
+ FilterContext.setContext(new FilterContext(map, config));
+ assertEquals(filter.filterProperty(test3Property, test3Property), test3Property);
+ filter.removeFilter(0);
+ FilterContext.setContext(new FilterContext(map, config));
+ assertEquals(filter.filterProperty(test1Property, test1Property), test1Property);
+ FilterContext.setContext(new FilterContext(map, config));
+ assertEquals(filter.filterProperty(test2Property, test2Property), test2Property);
+ FilterContext.setContext(new FilterContext(map, config));
+ assertEquals(filter.filterProperty(test3Property, test3Property), test3Property);
+ filter.addFilter(0, regexFilter);
+ FilterContext.setContext(new FilterContext(map, config));
+ assertNull(filter.filterProperty(test1Property, test1Property));
+ FilterContext.setContext(new FilterContext(map, config));
+ assertNull(filter.filterProperty(test2Property, test2Property));
+ FilterContext.setContext(new FilterContext(map, config));
+ assertEquals(filter.filterProperty(test3Property, test3Property), test3Property);
+ }
+
+ @Test
+ public void testClearFilters() throws Exception {
+ Context filter = new Context();
+ RegexPropertyFilter regexFilter = new RegexPropertyFilter();
+ regexFilter.setIncludes("test1.*");
+ Map<String,String> map = new HashMap<>();
+ map.put("test1", "test1");
+ map.put("test2", "test2");
+ map.put("test.test3", "test.test3");
+ FilterContext.setContext(new FilterContext(config));
+ assertEquals(filter.filterProperty(test1Property, test1Property), test1Property);
+ FilterContext.setContext(new FilterContext(config));
+ assertEquals(filter.filterProperty(test2Property, test2Property), test2Property);
+ FilterContext.setContext(new FilterContext(config));
+ assertEquals(filter.filterProperty(test3Property, test3Property), test3Property);
+ filter.addFilter(regexFilter);
+ FilterContext.setContext(new FilterContext(config));
+ assertEquals(filter.filterProperty(test1Property, test1Property), test1Property);
+ FilterContext.setContext(new FilterContext(config));
+ assertNull(filter.filterProperty(test2Property, test2Property));
+ FilterContext.setContext(new FilterContext(config));
+ assertNull(filter.filterProperty(test3Property, test3Property));
+ filter.clearFilters();
+ FilterContext.setContext(new FilterContext(config));
+ assertEquals(filter.filterProperty(test1Property, test1Property), test1Property);
+ FilterContext.setContext(new FilterContext(config));
+ assertEquals(filter.filterProperty(test2Property, test2Property), test2Property);
+ FilterContext.setContext(new FilterContext(config));
+ assertEquals(filter.filterProperty(test3Property, test3Property), test3Property);
+ }
+
+ @Test
+ public void testSetFilters() throws Exception {
+ Context filter = new Context();
+ RegexPropertyFilter regexFilter = new RegexPropertyFilter();
+ regexFilter.setIncludes("test\\..*");
+ Map<String,String> map = new HashMap<>();
+ map.put("test1", test1Property);
+ map.put("test2", test1Property);
+ map.put("test.test3", test3Property);
+ FilterContext.setContext(new FilterContext(map, config));
+ assertEquals(filter.filterProperty(test1Property, test1Property), test1Property);
+ FilterContext.setContext(new FilterContext(map, config));
+ assertEquals(filter.filterProperty(test2Property, test2Property), test2Property);
+ FilterContext.setContext(new FilterContext(map, config));
+ assertEquals(filter.filterProperty(test3Property, test3Property), test3Property);
+ filter.setFilters(regexFilter);
+ FilterContext.setContext(new FilterContext(map, config));
+ assertEquals(filter.filterProperty(test3Property, test3Property), test3Property);
+ FilterContext.setContext(new FilterContext(map, config));
+ assertNull(filter.filterProperty(test2Property, test2Property));
+ FilterContext.setContext(new FilterContext(map, config));
+ assertNull(filter.filterProperty(test1Property, test1Property));
+ }
+
+ @Test
+ public void testSetFilters1() throws Exception {
+ Context filter = new Context();
+ RegexPropertyFilter regexFilter = new RegexPropertyFilter();
+ regexFilter.setIncludes("test1.*");
+ Map<String,String> map = new HashMap<>();
+ FilterContext.setContext(new FilterContext(map, config));
+ assertEquals(filter.filterProperty(test1Property, test1Property), test1Property);
+ FilterContext.setContext(new FilterContext(map, config));
+ assertEquals(filter.filterProperty(test2Property, test2Property), test2Property);
+ FilterContext.setContext(new FilterContext(map, config));
+ assertEquals(filter.filterProperty(test3Property, test3Property), test3Property);
+ filter.setFilters(Arrays.asList(new Filter[]{regexFilter}));
+ FilterContext.setContext(new FilterContext(config));
+ assertEquals(filter.filterProperty(test1Property, test1Property), test1Property);
+ FilterContext.setContext(new FilterContext(config));
+ assertNull(filter.filterProperty(test2Property, test2Property));
+ FilterContext.setContext(new FilterContext(config));
+ assertNull(filter.filterProperty(test3Property, test3Property));
+ }
+
+ @Test
+ public void testGetFilters() throws Exception {
+ Context filter = new Context();
+ assertNotNull(filter.getFilters());
+ assertTrue(filter.getFilters().isEmpty());
+ RegexPropertyFilter regexFilter = new RegexPropertyFilter();
+ regexFilter.setIncludes("test\\..*");
+ filter.addFilter(regexFilter);
+ assertNotNull(filter.getFilters());
+ assertFalse(filter.getFilters().isEmpty());
+ assertEquals(1, filter.getFilters().size());
+ assertEquals(regexFilter, filter.getFilters().get(0));
+ }
+
+ @Test
+ public void testToString() throws Exception {
+ Context filter = new Context();
+ assertFalse(filter.toString().contains("test\\..*"));
+ assertTrue(filter.toString().contains("ProgrammableFilter"));
+ assertFalse(filter.toString().contains("RegexPropertyFilter"));
+ RegexPropertyFilter regexFilter = new RegexPropertyFilter();
+ regexFilter.setIncludes("test\\..*");
+ filter.addFilter(regexFilter);
+ assertTrue(filter.toString().contains("test\\..*"));
+ assertTrue(filter.toString().contains("ProgrammableFilter"));
+ assertTrue(filter.toString().contains("RegexPropertyFilter"));
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/cfb364cd/modules/formats/base/pom.xml
----------------------------------------------------------------------
diff --git a/modules/formats/base/pom.xml b/modules/formats/base/pom.xml
index a2007ce..20d4ab0 100644
--- a/modules/formats/base/pom.xml
+++ b/modules/formats/base/pom.xml
@@ -34,19 +34,13 @@ under the License.
<dependencies>
<dependency>
- <groupId>org.apache.tamaya</groupId>
- <artifactId>tamaya-api</artifactId>
- <version>${tamaya-apicore.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
<groupId>org.apache.tamaya.ext</groupId>
<artifactId>tamaya-resources</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tamaya</groupId>
- <artifactId>tamaya-spisupport</artifactId>
+ <artifactId>tamaya-base</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/cfb364cd/modules/formats/base/src/main/java/org/apache/tamaya/format/BaseFormatConfigSourceProvider.java
----------------------------------------------------------------------
diff --git a/modules/formats/base/src/main/java/org/apache/tamaya/format/BaseFormatConfigSourceProvider.java b/modules/formats/base/src/main/java/org/apache/tamaya/format/BaseFormatConfigSourceProvider.java
new file mode 100644
index 0000000..86cf909
--- /dev/null
+++ b/modules/formats/base/src/main/java/org/apache/tamaya/format/BaseFormatConfigSourceProvider.java
@@ -0,0 +1,159 @@
+/*
+ * 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.format;
+
+import javax.config.spi.ConfigSource;
+import javax.config.spi.ConfigSourceProvider;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.Objects;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Implementation of a {@link ConfigSourceProvider} that reads configuration from some given resource paths
+ * and using the given formats. The resource path are resolved as classpath resources. This can be changed by
+ * overriding {@link #getConfigSources(ConfigurationData)}.
+ * For each resource found the configuration formats passed get a chance to read the resource, if they succeed the
+ * result is taken as the providers PropertySources to be exposed.
+ */
+public abstract class BaseFormatConfigSourceProvider implements ConfigSourceProvider {
+ /**
+ * The logger used.
+ */
+ private static final Logger LOG = Logger.getLogger(BaseFormatConfigSourceProvider.class.getName());
+ /**
+ * The config formats supported for the given location/resource paths.
+ */
+ private final List<ConfigurationFormat> configFormats = new ArrayList<>();
+ /**
+ * The paths to be evaluated.
+ */
+ private final Collection<URL> paths = new ArrayList<>();
+
+ /**
+ * Creates a new instance.
+ *
+ * @param formats the formats to be used, not null, not empty.
+ * @param paths the paths to be resolved, not null, not empty.
+ */
+ public BaseFormatConfigSourceProvider(
+ List<ConfigurationFormat> formats,
+ URL... paths) {
+ this.configFormats.addAll(Objects.requireNonNull(formats));
+ this.paths.addAll(Arrays.asList(Objects.requireNonNull(paths)));
+ }
+
+ /**
+ * Creates a new instance, hereby using the current thread context classloader, or if not available the classloader
+ * that loaded this class.
+ * @param formats the formats to be used, not null, not empty.
+ * @param paths the paths to be resolved, not null, not empty.
+ */
+ public BaseFormatConfigSourceProvider(
+ List<ConfigurationFormat> formats, String... paths) {
+ ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ if(cl==null){
+ cl = getClass().getClassLoader();
+ }
+ this.configFormats.addAll(Objects.requireNonNull(formats));
+ for(String path:paths) {
+ Enumeration<URL> urls;
+ try {
+ urls = cl.getResources(path);
+ } catch (IOException e) {
+ LOG.log(Level.WARNING, "Failed to read resource: " + path, e);
+ continue;
+ }
+ while(urls.hasMoreElements()) {
+ this.paths.add(urls.nextElement());
+ }
+ }
+ }
+
+ /**
+ * Creates a new instance.
+ *
+ * @param classLoader the ClassLoader to be used, not null, not empty.
+ * @param formats the formats to be used, not null, not empty.
+ * @param paths the paths to be resolved, not null, not empty.
+ */
+ public BaseFormatConfigSourceProvider(
+ List<ConfigurationFormat> formats,
+ ClassLoader classLoader, String... paths) {
+ this.configFormats.addAll(Objects.requireNonNull(formats));
+ for(String path:paths) {
+ Enumeration<URL> urls;
+ try {
+ urls = classLoader.getResources(path);
+ } catch (IOException e) {
+ LOG.log(Level.WARNING, "Failed to read resource: " + path, e);
+ continue;
+ }
+ while(urls.hasMoreElements()) {
+ this.paths.add(urls.nextElement());
+ }
+ }
+ }
+
+
+ /**
+ * Method to create a {@link ConfigSource} based on the given entries read.
+ *
+ * @param data the configuration data, not null.
+ * @return the {@link ConfigSource} instance ready to be registered.
+ */
+ protected abstract Collection<ConfigSource> getConfigSources(ConfigurationData data);
+
+ /**
+ * This method does dynamically resolve the paths using the current ClassLoader set. If no ClassLoader was
+ * explcitly set during creation the current Thread context ClassLoader is used. If none of the supported
+ * formats is able to parse a resource a WARNING log is written.
+ *
+ * @return the PropertySources successfully read
+ */
+ @Override
+ public Iterable<ConfigSource> getConfigSources(ClassLoader classLoader) {
+ List<ConfigSource> propertySources = new ArrayList<>();
+ for (URL res : this.paths) {
+ try{
+ for (ConfigurationFormat format : configFormats) {
+ try (InputStream inputStream = res.openStream()){
+ if (format.accepts(res)) {
+ ConfigurationData data = format.readConfiguration(res.toString(), inputStream);
+ propertySources.addAll(getConfigSources(data));
+ }
+ } catch (Exception e) {
+ LOG.log(Level.WARNING, "Failed to put resource based config: " + res, e);
+ }
+ }
+ } catch (Exception e) {
+ LOG.log(Level.WARNING, "Failed to put resource based config: " + res, e);
+ }
+ }
+ return propertySources;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/cfb364cd/modules/formats/base/src/main/java/org/apache/tamaya/format/BaseFormatPropertySourceProvider.java
----------------------------------------------------------------------
diff --git a/modules/formats/base/src/main/java/org/apache/tamaya/format/BaseFormatPropertySourceProvider.java b/modules/formats/base/src/main/java/org/apache/tamaya/format/BaseFormatPropertySourceProvider.java
deleted file mode 100644
index a0f1fdd..0000000
--- a/modules/formats/base/src/main/java/org/apache/tamaya/format/BaseFormatPropertySourceProvider.java
+++ /dev/null
@@ -1,160 +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.format;
-
-import org.apache.tamaya.spi.PropertySource;
-import org.apache.tamaya.spi.PropertySourceProvider;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.Objects;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-/**
- * Implementation of a {@link PropertySourceProvider} that reads configuration from some given resource paths
- * and using the given formats. The resource path are resolved as classpath resources. This can be changed by
- * overriding {@link #getPropertySources()}.
- * For each resource found the configuration formats passed get a chance to read the resource, if they succeed the
- * result is taken as the providers PropertySources to be exposed.
- */
-public abstract class BaseFormatPropertySourceProvider implements PropertySourceProvider {
- /**
- * The logger used.
- */
- private static final Logger LOG = Logger.getLogger(BaseFormatPropertySourceProvider.class.getName());
- /**
- * The config formats supported for the given location/resource paths.
- */
- private final List<ConfigurationFormat> configFormats = new ArrayList<>();
- /**
- * The paths to be evaluated.
- */
- private final Collection<URL> paths = new ArrayList<>();
-
- /**
- * Creates a new instance.
- *
- * @param formats the formats to be used, not null, not empty.
- * @param paths the paths to be resolved, not null, not empty.
- */
- public BaseFormatPropertySourceProvider(
- List<ConfigurationFormat> formats,
- URL... paths) {
- this.configFormats.addAll(Objects.requireNonNull(formats));
- this.paths.addAll(Arrays.asList(Objects.requireNonNull(paths)));
- }
-
- /**
- * Creates a new instance, hereby using the current thread context classloader, or if not available the classloader
- * that loaded this class.
- * @param formats the formats to be used, not null, not empty.
- * @param paths the paths to be resolved, not null, not empty.
- */
- public BaseFormatPropertySourceProvider(
- List<ConfigurationFormat> formats, String... paths) {
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
- if(cl==null){
- cl = getClass().getClassLoader();
- }
- this.configFormats.addAll(Objects.requireNonNull(formats));
- for(String path:paths) {
- Enumeration<URL> urls;
- try {
- urls = cl.getResources(path);
- } catch (IOException e) {
- LOG.log(Level.WARNING, "Failed to read resource: " + path, e);
- continue;
- }
- while(urls.hasMoreElements()) {
- this.paths.add(urls.nextElement());
- }
- }
- }
-
- /**
- * Creates a new instance.
- *
- * @param classLoader the ClassLoader to be used, not null, not empty.
- * @param formats the formats to be used, not null, not empty.
- * @param paths the paths to be resolved, not null, not empty.
- */
- public BaseFormatPropertySourceProvider(
- List<ConfigurationFormat> formats,
- ClassLoader classLoader, String... paths) {
- this.configFormats.addAll(Objects.requireNonNull(formats));
- for(String path:paths) {
- Enumeration<URL> urls;
- try {
- urls = classLoader.getResources(path);
- } catch (IOException e) {
- LOG.log(Level.WARNING, "Failed to read resource: " + path, e);
- continue;
- }
- while(urls.hasMoreElements()) {
- this.paths.add(urls.nextElement());
- }
- }
- }
-
-
- /**
- * Method to create a {@link org.apache.tamaya.spi.PropertySource} based on the given entries read.
- *
- * @param data the configuration data, not null.
- * @return the {@link org.apache.tamaya.spi.PropertySource} instance ready to be registered.
- */
- protected abstract Collection<PropertySource> getPropertySources(ConfigurationData data);
-
- /**
- * This method does dynamically resolve the paths using the current ClassLoader set. If no ClassLoader was
- * explcitly set during creation the current Thread context ClassLoader is used. If none of the supported
- * formats is able to parse a resource a WARNING log is written.
- *
- * @return the PropertySources successfully read
- */
- @Override
- public Collection<PropertySource> getPropertySources() {
- List<PropertySource> propertySources = new ArrayList<>();
- for (URL res : this.paths) {
- try{
- for (ConfigurationFormat format : configFormats) {
- try (InputStream inputStream = res.openStream()){
- if (format.accepts(res)) {
- ConfigurationData data = format.readConfiguration(res.toString(), inputStream);
- propertySources.addAll(getPropertySources(data));
- }
- } catch (Exception e) {
- LOG.log(Level.WARNING, "Failed to put resource based config: " + res, e);
- }
- }
- } catch (Exception e) {
- LOG.log(Level.WARNING, "Failed to put resource based config: " + res, e);
- }
- }
- return propertySources;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/cfb364cd/modules/formats/base/src/main/java/org/apache/tamaya/format/ConfigurationFormats.java
----------------------------------------------------------------------
diff --git a/modules/formats/base/src/main/java/org/apache/tamaya/format/ConfigurationFormats.java b/modules/formats/base/src/main/java/org/apache/tamaya/format/ConfigurationFormats.java
index f08e967..804147e 100644
--- a/modules/formats/base/src/main/java/org/apache/tamaya/format/ConfigurationFormats.java
+++ b/modules/formats/base/src/main/java/org/apache/tamaya/format/ConfigurationFormats.java
@@ -31,10 +31,10 @@ import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.apache.tamaya.ConfigException;
-import org.apache.tamaya.spi.PropertySource;
import org.apache.tamaya.spi.ServiceContextManager;
+import javax.config.spi.ConfigSource;
+
/**
* Small accessor and management class dealing with {@link org.apache.tamaya.format.ConfigurationFormat}
* instances.
@@ -199,7 +199,7 @@ public final class ConfigurationFormats {
* @param inputStream the inputStream from where to read, not null.
* @param formats the formats to try.
* @return the ConfigurationData read, or null.
- * @throws ConfigException if the resource cannot be read.
+ * @throws IllegalArgumentException if the resource cannot be read.
*/
public static ConfigurationData readConfigurationData(String resource, InputStream inputStream,
Collection<ConfigurationFormat> formats) throws IOException {
@@ -222,64 +222,64 @@ public final class ConfigurationFormats {
/**
* Tries to read configuration data from a given URL, hereby explicitly trying all given formats
- * in order and transforms it into a {@link PropertySource} using a default mapping.
+ * in order and transforms it into a {@link javax.config.spi.ConfigSource} using a default mapping.
*
* @param url the URL to read, not null.
* @param formats the formats to try. If not formats are passed explicitly, all known formats
* are tried.
* @return a corresponding property source, or null.
- * @throws ConfigException if the resource cannot be read.
+ * @throws IllegalArgumentException if the resource cannot be read.
* @throws IOException if the URL's stream can not be opened.
*/
- public static PropertySource createPropertySource(URL url, ConfigurationFormat... formats)throws IOException{
- return createPropertySource(url.toString(), url.openStream(), formats);
+ public static ConfigSource createConfigSource(URL url, ConfigurationFormat... formats)throws IOException{
+ return createConfigSource(url.toString(), url.openStream(), formats);
}
/**
* Tries to read configuration data from a given URL, hereby explicitly trying all given formats
- * in order and transforms it into a {@link PropertySource} using a default mapping.
+ * in order and transforms it into a {@link ConfigSource} using a default mapping.
*
* @param url the URL to read, not null.
* @param formats the formats to try. If not formats are passed explicitly, all known formats
* are tried.
* @return a corresponding property source, or null.
- * @throws ConfigException if the resource cannot be read.
+ * @throws IllegalArgumentException if the resource cannot be read.
* @throws IOException if the URL's stream can not be opened.
*/
- public static PropertySource createPropertySource(URL url, Collection<ConfigurationFormat> formats)throws IOException{
- return createPropertySource(url.toString(), url.openStream(), formats);
+ public static ConfigSource createConfigSource(URL url, Collection<ConfigurationFormat> formats)throws IOException{
+ return createConfigSource(url.toString(), url.openStream(), formats);
}
/**
* Tries to read configuration data from a given URL, hereby explicitly trying all given formats
- * in order and transforms it into a {@link PropertySource} using a default mapping.
+ * in order and transforms it into a {@link ConfigSource} using a default mapping.
*
* @param resource a descriptive name for the resource, since an InputStream does not have any
* @param inputStream the inputStream from where to read, not null.
* @param formats the formats to try. If not formats are passed explicitly, all known formats
* are tried.
* @return a corresponding property source, or null.
- * @throws ConfigException if the resource cannot be read.
+ * @throws IllegalArgumentException if the resource cannot be read.
*/
- public static PropertySource createPropertySource(String resource, InputStream inputStream,
- ConfigurationFormat... formats){
- return createPropertySource(resource, inputStream, Arrays.asList(formats));
+ public static ConfigSource createConfigSource(String resource, InputStream inputStream,
+ ConfigurationFormat... formats){
+ return createConfigSource(resource, inputStream, Arrays.asList(formats));
}
/**
* Tries to read configuration data from a given URL, hereby explicitly trying all given formats
- * in order and transforms it into a {@link PropertySource} using a default mapping.
+ * in order and transforms it into a {@link ConfigSource} using a default mapping.
*
* @param resource a descriptive name for the resource, since an InputStream does not have any
* @param inputStream the inputStream from where to read, not null.
* @param formats the formats to try. If not formats are passed explicitly, all known formats
* are tried.
* @return a corresponding property source, or null.
- * @throws ConfigException if the resource cannot be read.
+ * @throws IllegalArgumentException if the resource cannot be read.
*/
- public static PropertySource createPropertySource(String resource, InputStream inputStream,
- Collection<ConfigurationFormat> formats) {
+ public static ConfigSource createConfigSource(String resource, InputStream inputStream,
+ Collection<ConfigurationFormat> formats) {
Objects.requireNonNull(resource, "Config resource required for traceability.");
try(InputStreamFactory isFactory = new InputStreamFactory(Objects.requireNonNull(inputStream))) {
if(formats.isEmpty()){
@@ -289,7 +289,7 @@ public final class ConfigurationFormats {
try (InputStream is = isFactory.createInputStream()) {
final ConfigurationData data = format.readConfiguration(resource, is);
if (data != null) {
- return new MappedConfigurationDataPropertySource(data);
+ return new MappedConfigurationDataConfigSource(data);
}
} catch (final Exception e) {
LOG.log(Level.INFO,
@@ -297,9 +297,9 @@ public final class ConfigurationFormats {
}
}
}catch(IOException ioe){
- throw new ConfigException("Failed to read from input stream for "+resource, ioe);
+ throw new IllegalArgumentException("Failed to read from input stream for "+resource, ioe);
}
- throw new ConfigException("No matching format found for "+resource+", tried: "+ formats);
+ throw new IllegalArgumentException("No matching format found for "+resource+", tried: "+ formats);
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/cfb364cd/modules/formats/base/src/main/java/org/apache/tamaya/format/MappedConfigurationDataConfigSource.java
----------------------------------------------------------------------
diff --git a/modules/formats/base/src/main/java/org/apache/tamaya/format/MappedConfigurationDataConfigSource.java b/modules/formats/base/src/main/java/org/apache/tamaya/format/MappedConfigurationDataConfigSource.java
new file mode 100644
index 0000000..3c45747
--- /dev/null
+++ b/modules/formats/base/src/main/java/org/apache/tamaya/format/MappedConfigurationDataConfigSource.java
@@ -0,0 +1,152 @@
+/*
+ * 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.format;
+
+import org.apache.tamaya.base.configsource.BaseConfigSource;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.function.Supplier;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Mapped PropertySource that uses the flattened config data read from an URL by a
+ * {@link org.apache.tamaya.format.ConfigurationFormat}. Use of a {@link Supplier}
+ * allows deferring the load until a resource is available.
+ */
+public class MappedConfigurationDataConfigSource extends BaseConfigSource {
+ private static final Logger LOG = Logger.getLogger(MappedConfigurationDataConfigSource.class.getName());
+ private Map<String, String> properties;
+ private final Supplier<ConfigurationData> dataSupplier;
+
+ /*
+ * Constructor, uses hereby the flattened config data read from an URL by a
+ * ${@link org.apache.tamaya.format.ConfigurationFormat}.
+ * Hereby it reads the <i>default</i> properties as is and adds properties
+ * contained in a section as {@code Entry<section.propertyName,value>}.
+ * @see ConfigurationData#getCombinedProperties()
+ */
+ public MappedConfigurationDataConfigSource(String name, final Supplier<ConfigurationData> dataSupplier) {
+ this(name, 0, dataSupplier);
+ }
+
+ /*
+ * Constructor, uses hereby the flattened config data read from an URL by a
+ * ${@link org.apache.tamaya.format.ConfigurationFormat}.
+ * Hereby it reads the <i>default</i> properties as is and adds properties
+ * contained in a section as {@code Entry<section.propertyName,value>}.
+ * @see ConfigurationData#getCombinedProperties()
+ */
+ public MappedConfigurationDataConfigSource(final ConfigurationData data) {
+ this(data.getResource(), 0, new Supplier<ConfigurationData>(){
+ @Override
+ public ConfigurationData get() {
+ return data;
+ }
+ });
+ }
+
+ /*
+ * Constructor, uses hereby the flattened config data read from an URL by a
+ * ${@link org.apache.tamaya.format.ConfigurationFormat}.
+ * Hereby it reads the <i>default</i> properties as is and adds properties
+ * contained in a section as {@code Entry<section.propertyName,value>}.
+ * @see ConfigurationData#getCombinedProperties()
+ */
+ public MappedConfigurationDataConfigSource(int defaultOrdinal, final ConfigurationData data) {
+ this(data.getResource(), defaultOrdinal, new Supplier<ConfigurationData>() {
+ @Override
+ public ConfigurationData get() {
+ return data;
+ }
+ });
+ }
+
+ /*
+ * Constructor, uses hereby the flattened config data read from an URL by a
+ * ${@link org.apache.tamaya.format.ConfigurationFormat}.
+ * Hereby it reads the <i>default</i> properties as is and adds properties
+ * contained in a section as {@code Entry<section.propertyName,value>}.
+ * @see ConfigurationData#getCombinedProperties()
+ */
+ public MappedConfigurationDataConfigSource(String name, int defaultOrdinal, Supplier<ConfigurationData> dataSupplier) {
+ super(defaultOrdinal);
+ setName(name);
+ this.dataSupplier = dataSupplier;
+ load();
+ }
+
+ public void load(){
+ try{
+ this.properties = populateData(dataSupplier.get());
+ }catch(Exception e){
+ LOG.log(Level.INFO, "Failed to load property source: " + getName(), e);
+ if(this.properties==null) {
+ this.properties = new HashMap<>();
+ }
+ this.properties.put("_exception", e.getLocalizedMessage());
+ this.properties.put("_state", "ERROR");
+ }finally{
+ this.properties.put("_timestamp", String.valueOf(System.currentTimeMillis()));
+ }
+ }
+
+ /**
+ * Method that copies and converts the properties read from the data instance
+ * provided.
+ * @param data the data returned from the format, not null.
+ * @return the final properties to be included.
+ */
+ protected Map<String, String> populateData(ConfigurationData data) {
+ Map<String, String> result = new HashMap<>();
+ if(data!=null) {
+ for (String section : data.getSectionNames()) {
+ for (Map.Entry<String, String> en : data.getSection(section).entrySet()) {
+ if ("default".equals(section)) {
+ result.put(en.getKey(), en.getValue());
+ } else {
+ result.put(section + '.' + en.getKey(), en.getValue());
+ }
+ }
+ }
+ result.put("_propertySource", getName());
+ result.put("_source", data.getResource());
+ }
+ return result;
+ }
+
+ @Override
+ public String getValue(String key) {
+ return properties.get(key);
+ }
+
+ @Override
+ public Map<String, String> getProperties() {
+ return Collections.unmodifiableMap(this.properties);
+ }
+
+ @Override
+ protected String toStringValues() {
+ return super.toStringValues() +
+ " dataSupplier=" + dataSupplier + '\n';
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/cfb364cd/modules/formats/base/src/main/java/org/apache/tamaya/format/MappedConfigurationDataPropertySource.java
----------------------------------------------------------------------
diff --git a/modules/formats/base/src/main/java/org/apache/tamaya/format/MappedConfigurationDataPropertySource.java b/modules/formats/base/src/main/java/org/apache/tamaya/format/MappedConfigurationDataPropertySource.java
deleted file mode 100644
index 5bd6444..0000000
--- a/modules/formats/base/src/main/java/org/apache/tamaya/format/MappedConfigurationDataPropertySource.java
+++ /dev/null
@@ -1,157 +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.format;
-
-import org.apache.tamaya.functions.Supplier;
-import org.apache.tamaya.spi.PropertyValue;
-import org.apache.tamaya.spisupport.propertysource.BasePropertySource;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-/**
- * Mapped PropertySource that uses the flattened config data read from an URL by a
- * {@link org.apache.tamaya.format.ConfigurationFormat}. Use of a {@link Supplier}
- * allows deferring the load until a resource is available.
- */
-public class MappedConfigurationDataPropertySource extends BasePropertySource {
- private static final Logger LOG = Logger.getLogger(MappedConfigurationDataPropertySource.class.getName());
- private Map<String, String> properties;
- private final Supplier<ConfigurationData> dataSupplier;
-
- /*
- * Constructor, uses hereby the flattened config data read from an URL by a
- * ${@link org.apache.tamaya.format.ConfigurationFormat}.
- * Hereby it reads the <i>default</i> properties as is and adds properties
- * contained in a section as {@code Entry<section.propertyName,value>}.
- * @see ConfigurationData#getCombinedProperties()
- */
- public MappedConfigurationDataPropertySource(String name, final Supplier<ConfigurationData> dataSupplier) {
- this(name, 0, dataSupplier);
- }
-
- /*
- * Constructor, uses hereby the flattened config data read from an URL by a
- * ${@link org.apache.tamaya.format.ConfigurationFormat}.
- * Hereby it reads the <i>default</i> properties as is and adds properties
- * contained in a section as {@code Entry<section.propertyName,value>}.
- * @see ConfigurationData#getCombinedProperties()
- */
- public MappedConfigurationDataPropertySource(final ConfigurationData data) {
- this(data.getResource(), 0, new Supplier<ConfigurationData>(){
- @Override
- public ConfigurationData get() {
- return data;
- }
- });
- }
-
- /*
- * Constructor, uses hereby the flattened config data read from an URL by a
- * ${@link org.apache.tamaya.format.ConfigurationFormat}.
- * Hereby it reads the <i>default</i> properties as is and adds properties
- * contained in a section as {@code Entry<section.propertyName,value>}.
- * @see ConfigurationData#getCombinedProperties()
- */
- public MappedConfigurationDataPropertySource(int defaultOrdinal, final ConfigurationData data) {
- this(data.getResource(), defaultOrdinal, new Supplier<ConfigurationData>() {
- @Override
- public ConfigurationData get() {
- return data;
- }
- });
- }
-
- /*
- * Constructor, uses hereby the flattened config data read from an URL by a
- * ${@link org.apache.tamaya.format.ConfigurationFormat}.
- * Hereby it reads the <i>default</i> properties as is and adds properties
- * contained in a section as {@code Entry<section.propertyName,value>}.
- * @see ConfigurationData#getCombinedProperties()
- */
- public MappedConfigurationDataPropertySource(String name, int defaultOrdinal, Supplier<ConfigurationData> dataSupplier) {
- super(defaultOrdinal);
- setName(name);
- this.dataSupplier = dataSupplier;
- load();
- }
-
- public void load(){
- try{
- this.properties = populateData(dataSupplier.get());
- }catch(Exception e){
- LOG.log(Level.INFO, "Failed to load property source: " + getName(), e);
- if(this.properties==null) {
- this.properties = new HashMap<>();
- }
- this.properties.put("_exception", e.getLocalizedMessage());
- this.properties.put("_state", "ERROR");
- }finally{
- this.properties.put("_timestamp", String.valueOf(System.currentTimeMillis()));
- }
- }
-
- /**
- * Method that copies and converts the properties read from the data instance
- * provided.
- * @param data the data returned from the format, not null.
- * @return the final properties to be included.
- */
- protected Map<String, String> populateData(ConfigurationData data) {
- Map<String, String> result = new HashMap<>();
- if(data!=null) {
- for (String section : data.getSectionNames()) {
- for (Map.Entry<String, String> en : data.getSection(section).entrySet()) {
- if ("default".equals(section)) {
- result.put(en.getKey(), en.getValue());
- } else {
- result.put(section + '.' + en.getKey(), en.getValue());
- }
- }
- }
- result.put("_propertySource", getName());
- result.put("_source", data.getResource());
- }
- return result;
- }
-
- @Override
- public PropertyValue get(String key) {
- String val = properties.get(key);
- return PropertyValue.of(key, val, getName());
- }
-
- @Override
- public Map<String, PropertyValue> getProperties() {
- Map<String, PropertyValue> result = new HashMap<>();
- for(Map.Entry<String,String> en:this.properties.entrySet()) {
- result.put(en.getKey(), PropertyValue.of(en.getKey(), en.getValue(), getName()));
- }
- return result;
- }
-
- @Override
- protected String toStringValues() {
- return super.toStringValues() +
- " dataSupplier=" + dataSupplier + '\n';
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/cfb364cd/modules/formats/base/src/main/java/org/apache/tamaya/format/formats/IniConfigurationFormat.java
----------------------------------------------------------------------
diff --git a/modules/formats/base/src/main/java/org/apache/tamaya/format/formats/IniConfigurationFormat.java b/modules/formats/base/src/main/java/org/apache/tamaya/format/formats/IniConfigurationFormat.java
index 6fe82c6..b1f2267 100644
--- a/modules/formats/base/src/main/java/org/apache/tamaya/format/formats/IniConfigurationFormat.java
+++ b/modules/formats/base/src/main/java/org/apache/tamaya/format/formats/IniConfigurationFormat.java
@@ -18,7 +18,6 @@
*/
package org.apache.tamaya.format.formats;
-import org.apache.tamaya.ConfigException;
import org.apache.tamaya.format.ConfigurationData;
import org.apache.tamaya.format.ConfigurationDataBuilder;
import org.apache.tamaya.format.ConfigurationFormat;
@@ -65,7 +64,7 @@ public class IniConfigurationFormat implements ConfigurationFormat {
if (line.startsWith("[")) {
int end = line.indexOf(']');
if (end < 0) {
- throw new ConfigException(
+ throw new IllegalArgumentException(
"Invalid INI-Format, ']' expected, at " + lineNum + " in " + resource);
}
section = line.substring(1, end);
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/cfb364cd/modules/formats/base/src/test/java/org/apache/tamaya/format/FormatConfigSourceProviderTest.java
----------------------------------------------------------------------
diff --git a/modules/formats/base/src/test/java/org/apache/tamaya/format/FormatConfigSourceProviderTest.java b/modules/formats/base/src/test/java/org/apache/tamaya/format/FormatConfigSourceProviderTest.java
new file mode 100644
index 0000000..881a817
--- /dev/null
+++ b/modules/formats/base/src/test/java/org/apache/tamaya/format/FormatConfigSourceProviderTest.java
@@ -0,0 +1,58 @@
+/*
+ * 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.format;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.junit.Test;
+
+import javax.config.spi.ConfigSource;
+import javax.config.spi.ConfigSourceProvider;
+
+import static org.junit.Assert.*;
+
+public class FormatConfigSourceProviderTest
+ extends BaseFormatConfigSourceProvider {
+ public FormatConfigSourceProviderTest() {
+ super(ConfigurationFormats.getFormats(), "Test.ini", "Test.properties");
+ }
+
+ @Test
+ public void getConfigSourcesTest() {
+ ConfigSourceProvider provider = new FormatConfigSourceProviderTest();
+ Iterable<ConfigSource> sources = provider.getConfigSources(null);
+
+ Iterator iter = sources.iterator();
+ assertTrue(iter.hasNext());
+ iter.next();
+ assertTrue(iter.hasNext());
+ iter.next();
+ assertFalse(iter.hasNext());
+ }
+
+ @Override
+ protected Collection<ConfigSource> getConfigSources(ConfigurationData data) {
+ ConfigSource ps = new MappedConfigurationDataConfigSource(data);
+ ArrayList<ConfigSource> result = new ArrayList<ConfigSource>();
+ result.add(ps);
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/cfb364cd/modules/formats/base/src/test/java/org/apache/tamaya/format/FormatPropertySourceProviderTest.java
----------------------------------------------------------------------
diff --git a/modules/formats/base/src/test/java/org/apache/tamaya/format/FormatPropertySourceProviderTest.java b/modules/formats/base/src/test/java/org/apache/tamaya/format/FormatPropertySourceProviderTest.java
deleted file mode 100644
index 3a4ec16..0000000
--- a/modules/formats/base/src/test/java/org/apache/tamaya/format/FormatPropertySourceProviderTest.java
+++ /dev/null
@@ -1,50 +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.format;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import org.apache.tamaya.spi.PropertySource;
-import org.apache.tamaya.spi.PropertySourceProvider;
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-public class FormatPropertySourceProviderTest
- extends BaseFormatPropertySourceProvider {
- public FormatPropertySourceProviderTest() {
- super(ConfigurationFormats.getFormats(), "Test.ini", "Test.properties");
- }
-
- @Test
- public void getPropertySourcesTest() {
- PropertySourceProvider provider = new FormatPropertySourceProviderTest();
- Collection<PropertySource> sources = provider.getPropertySources();
-
- assertEquals(2, sources.size());
- }
-
- @Override
- protected Collection<PropertySource> getPropertySources(ConfigurationData data) {
- PropertySource ps = new MappedConfigurationDataPropertySource(data);
- ArrayList<PropertySource> result = new ArrayList<PropertySource>();
- result.add(ps);
- return result;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/cfb364cd/modules/formats/base/src/test/java/org/apache/tamaya/format/MappedConfigurationDataPropertySourceTest.java
----------------------------------------------------------------------
diff --git a/modules/formats/base/src/test/java/org/apache/tamaya/format/MappedConfigurationDataPropertySourceTest.java b/modules/formats/base/src/test/java/org/apache/tamaya/format/MappedConfigurationDataPropertySourceTest.java
index 1d26d3a..619240f 100644
--- a/modules/formats/base/src/test/java/org/apache/tamaya/format/MappedConfigurationDataPropertySourceTest.java
+++ b/modules/formats/base/src/test/java/org/apache/tamaya/format/MappedConfigurationDataPropertySourceTest.java
@@ -19,21 +19,22 @@
package org.apache.tamaya.format;
import org.apache.tamaya.format.formats.PropertiesFormat;
-import org.apache.tamaya.spi.PropertySource;
import org.junit.Test;
+import javax.config.spi.ConfigSource;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
/**
- * Tests for {@link MappedConfigurationDataPropertySource}.
+ * Tests for {@link MappedConfigurationDataConfigSource}.
*/
public class MappedConfigurationDataPropertySourceTest {
@Test
public void testGetName() throws Exception {
- MappedConfigurationDataPropertySource ps = new MappedConfigurationDataPropertySource(createConfigurationData("test1"));
+ MappedConfigurationDataConfigSource ps = new MappedConfigurationDataConfigSource(createConfigurationData("test1"));
assertEquals("test1", ps.getName());
}
@@ -47,7 +48,7 @@ public class MappedConfigurationDataPropertySourceTest {
private ConfigurationData createConfigurationData(String sourceName, int ordinal) {
return ConfigurationDataBuilder.of(sourceName, new PropertiesFormat())
.addDefaultProperty("a", "aValue").addSectionProperty("section1", "sectionKey1", "sectionValue11")
- .addSections("section1", "section12").addDefaultProperty(PropertySource.TAMAYA_ORDINAL, String.valueOf(ordinal))
+ .addSections("section1", "section12").addDefaultProperty(ConfigSource.CONFIG_ORDINAL, String.valueOf(ordinal))
.addSectionProperty("section2", "sectionKey1", "sectionValue21").build();
}
@@ -60,39 +61,39 @@ public class MappedConfigurationDataPropertySourceTest {
@Test
public void testGetOrdinal() throws Exception {
- MappedConfigurationDataPropertySource ps = new MappedConfigurationDataPropertySource(createConfigurationData("test1", 11));
+ MappedConfigurationDataConfigSource ps = new MappedConfigurationDataConfigSource(createConfigurationData("test1", 11));
assertEquals(11, ps.getOrdinal());
}
@Test
public void testGet() throws Exception {
- MappedConfigurationDataPropertySource ps = new MappedConfigurationDataPropertySource(createConfigurationData("test2"));
- assertEquals("aValue", ps.get("a").getValue());
- assertNotNull(ps.get("section1.sectionKey1").getValue());
- assertNotNull(ps.get("section2.sectionKey1").getValue());
- assertNull(ps.get("sectionKey1"));
- ps = new MappedConfigurationDataPropertySource(createConfigurationDataNoDefault("test2"));
- assertEquals("sectionValue11", ps.get("section1.sectionKey1").getValue());
- assertEquals("sectionValue21", ps.get("section2.sectionKey1").getValue());
- assertNull(ps.get("a"));
- assertNull(ps.get("section1"));
+ MappedConfigurationDataConfigSource ps = new MappedConfigurationDataConfigSource(createConfigurationData("test2"));
+ assertEquals("aValue", ps.getValue("a"));
+ assertNotNull(ps.getValue("section1.sectionKey1"));
+ assertNotNull(ps.getValue("section2.sectionKey1"));
+ assertNull(ps.getValue("sectionKey1"));
+ ps = new MappedConfigurationDataConfigSource(createConfigurationDataNoDefault("test2"));
+ assertEquals("sectionValue11", ps.getValue("section1.sectionKey1"));
+ assertEquals("sectionValue21", ps.getValue("section2.sectionKey1"));
+ assertNull(ps.getValue("a"));
+ assertNull(ps.getValue("section1"));
}
@Test
public void testGetProperties() throws Exception {
- MappedConfigurationDataPropertySource ps = new MappedConfigurationDataPropertySource(createConfigurationData("test3"));
+ MappedConfigurationDataConfigSource ps = new MappedConfigurationDataConfigSource(createConfigurationData("test3"));
assertNotNull(ps.getProperties());
- assertEquals("aValue", ps.getProperties().get("a").getValue());
+ assertEquals("aValue", ps.getProperties().get("a"));
assertNotNull(ps.getProperties().get("section1.sectionKey1"));
assertNotNull(ps.getProperties().get("section2.sectionKey1"));
assertNull(ps.getProperties().get("section1.sectionKey2"));
assertNull(ps.getProperties().get("section2.sectionKey2"));
assertNull(ps.getProperties().get("sectionKey1"));
assertNull(ps.getProperties().get("sectionKey2"));
- ps = new MappedConfigurationDataPropertySource(createConfigurationDataNoDefault("test3"));
+ ps = new MappedConfigurationDataConfigSource(createConfigurationDataNoDefault("test3"));
assertNotNull(ps.getProperties());
- assertEquals("sectionValue11", ps.getProperties().get("section1.sectionKey1").getValue());
- assertEquals("sectionValue21", ps.getProperties().get("section2.sectionKey1").getValue());
- assertNull(ps.get("section1"));
+ assertEquals("sectionValue11", ps.getProperties().get("section1.sectionKey1"));
+ assertEquals("sectionValue21", ps.getProperties().get("section2.sectionKey1"));
+ assertNull(ps.getValue("section1"));
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/cfb364cd/modules/formats/json/pom.xml
----------------------------------------------------------------------
diff --git a/modules/formats/json/pom.xml b/modules/formats/json/pom.xml
index 49360ca..75a27f7 100644
--- a/modules/formats/json/pom.xml
+++ b/modules/formats/json/pom.xml
@@ -37,16 +37,9 @@ under the License.
<dependencies>
<dependency>
<groupId>org.apache.tamaya</groupId>
- <artifactId>tamaya-api</artifactId>
- <version>${tamaya-apicore.version}</version>
- <scope>provided</scope>
- </dependency>
-
- <dependency>
- <groupId>org.apache.tamaya</groupId>
<artifactId>tamaya-core</artifactId>
<version>${tamaya-apicore.version}</version>
- <scope>provided</scope>
+ <scope>test</scope>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/cfb364cd/modules/formats/json/src/main/java/org/apache/tamaya/json/JSONConfigSource.java
----------------------------------------------------------------------
diff --git a/modules/formats/json/src/main/java/org/apache/tamaya/json/JSONConfigSource.java b/modules/formats/json/src/main/java/org/apache/tamaya/json/JSONConfigSource.java
new file mode 100644
index 0000000..2f73fb0
--- /dev/null
+++ b/modules/formats/json/src/main/java/org/apache/tamaya/json/JSONConfigSource.java
@@ -0,0 +1,148 @@
+/*
+ * 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.json;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.nio.charset.Charset;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.config.spi.ConfigSource;
+import javax.json.Json;
+import javax.json.JsonObject;
+import javax.json.JsonReaderFactory;
+import javax.json.JsonStructure;
+
+import static java.lang.String.format;
+
+/**
+ * Property source based on a JSON file.
+ */
+public class JSONConfigSource implements ConfigSource {
+ /** Constant for enabling comments in Johnzon. */
+ public static final String JOHNZON_SUPPORTS_COMMENTS_PROP = "org.apache.johnzon.supports-comments";
+
+ /** The underlying resource. */
+ private final URL urlResource;
+ /** The values read. */
+ private final Map<String, String> values;
+ /** The evaluated ordinal. */
+ private int ordinal;
+ /** The JSON reader factory used. */
+ private JsonReaderFactory readerFactory = initReaderFactory();
+
+ /** Initializes the factory to be used for creating readers. */
+ private JsonReaderFactory initReaderFactory() {
+ Map<String, Object> config = new HashMap<>();
+ config.put(JOHNZON_SUPPORTS_COMMENTS_PROP, true);
+ return Json.createReaderFactory(config);
+ }
+
+ /**
+ * Constructor, hereby using 0 as the default ordinal.
+ * @param resource the resource modelled as URL, not null.
+ */
+ public JSONConfigSource(URL resource)throws IOException {
+ this(resource, 0);
+ }
+
+ /**
+ * Constructor.
+ * @param resource the resource modelled as URL, not null.
+ * @param defaultOrdinal the defaultOrdinal to be used.
+ */
+ public JSONConfigSource(URL resource, int defaultOrdinal)throws IOException {
+ urlResource = Objects.requireNonNull(resource);
+ this.ordinal = defaultOrdinal; // may be overriden by read...
+ this.values = readConfig(urlResource);
+ if (this.values.containsKey(CONFIG_ORDINAL)) {
+ this.ordinal = Integer.parseInt(this.values.get(CONFIG_ORDINAL));
+ }
+ Map<String, Object> config = new HashMap<>();
+ config.put(JOHNZON_SUPPORTS_COMMENTS_PROP, true);
+ this.readerFactory = Json.createReaderFactory(config);
+ }
+
+
+ public int getOrdinal() {
+ String configuredOrdinal = getValue(CONFIG_ORDINAL);
+ if(configuredOrdinal!=null){
+ try{
+ return Integer.parseInt(configuredOrdinal);
+ } catch(Exception e){
+ Logger.getLogger(getClass().getName()).log(Level.WARNING,
+ "Configured Ordinal is not an int number: " + configuredOrdinal, e);
+ }
+ }
+ return ordinal;
+ }
+
+ @Override
+ public String getName() {
+ return urlResource.toExternalForm();
+ }
+
+ @Override
+ public String getValue(String key) {
+ return getProperties().get(key);
+ }
+
+ @Override
+ public Map<String, String> getProperties() {
+
+ return Collections.unmodifiableMap(values);
+ }
+
+ /**
+ * Reads the configuration.
+ * @param urlResource soure of the configuration.
+ * @return the configuration read from the given resource URL.
+ * @throws IllegalArgumentException if resource URL cannot be read.
+ */
+ protected Map<String, String> readConfig(URL urlResource) throws IOException{
+ try (InputStream is = urlResource.openStream()) {
+ JsonStructure root = this.readerFactory.createReader(is, Charset.forName("UTF-8")).read();
+
+ // Test added. H. Saly, 15. Aug. 2015
+ if (!(root instanceof JsonObject)) {
+ throw new IllegalArgumentException("Currently only JSON objects are supported");
+ }
+
+ Map<String, String> values = new HashMap<>();
+ JSONVisitor visitor = new JSONVisitor((JsonObject)root, values);
+ visitor.run();
+ Map<String, String> result = new HashMap<>();
+ for(Map.Entry<String,String> en:values.entrySet()){
+ result.put(en.getKey(), en.getValue());
+ }
+ return result;
+ }catch(IOException ioe){
+ throw ioe;
+ }catch (Exception t) {
+ throw new IOException(format("Failed to read properties from %s", urlResource.toExternalForm()), t);
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/cfb364cd/modules/formats/json/src/main/java/org/apache/tamaya/json/JSONPropertySource.java
----------------------------------------------------------------------
diff --git a/modules/formats/json/src/main/java/org/apache/tamaya/json/JSONPropertySource.java b/modules/formats/json/src/main/java/org/apache/tamaya/json/JSONPropertySource.java
deleted file mode 100644
index 5934210..0000000
--- a/modules/formats/json/src/main/java/org/apache/tamaya/json/JSONPropertySource.java
+++ /dev/null
@@ -1,155 +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.json;
-
-import org.apache.tamaya.ConfigException;
-import org.apache.tamaya.spi.PropertySource;
-import org.apache.tamaya.spi.PropertyValue;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.nio.charset.Charset;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.json.Json;
-import javax.json.JsonObject;
-import javax.json.JsonReaderFactory;
-import javax.json.JsonStructure;
-
-import static java.lang.String.format;
-
-/**
- * Property source based on a JSON file.
- */
-public class JSONPropertySource implements PropertySource {
- /** Constant for enabling comments in Johnzon. */
- public static final String JOHNZON_SUPPORTS_COMMENTS_PROP = "org.apache.johnzon.supports-comments";
-
- /** The underlying resource. */
- private final URL urlResource;
- /** The values read. */
- private final Map<String, PropertyValue> values;
- /** The evaluated ordinal. */
- private int ordinal;
- /** The JSON reader factory used. */
- private JsonReaderFactory readerFactory = initReaderFactory();
-
- /** Initializes the factory to be used for creating readers. */
- private JsonReaderFactory initReaderFactory() {
- Map<String, Object> config = new HashMap<>();
- config.put(JOHNZON_SUPPORTS_COMMENTS_PROP, true);
- return Json.createReaderFactory(config);
- }
-
- /**
- * Constructor, hereby using 0 as the default ordinal.
- * @param resource the resource modelled as URL, not null.
- */
- public JSONPropertySource(URL resource)throws IOException {
- this(resource, 0);
- }
-
- /**
- * Constructor.
- * @param resource the resource modelled as URL, not null.
- * @param defaultOrdinal the defaultOrdinal to be used.
- */
- public JSONPropertySource(URL resource, int defaultOrdinal)throws IOException {
- urlResource = Objects.requireNonNull(resource);
- this.ordinal = defaultOrdinal; // may be overriden by read...
- this.values = readConfig(urlResource);
- if (this.values.containsKey(TAMAYA_ORDINAL)) {
- this.ordinal = Integer.parseInt(this.values.get(TAMAYA_ORDINAL).getValue());
- }
- Map<String, Object> config = new HashMap<>();
- config.put(JOHNZON_SUPPORTS_COMMENTS_PROP, true);
- this.readerFactory = Json.createReaderFactory(config);
- }
-
-
- public int getOrdinal() {
- PropertyValue configuredOrdinal = get(TAMAYA_ORDINAL);
- if(configuredOrdinal!=null){
- try{
- return Integer.parseInt(configuredOrdinal.getValue());
- } catch(Exception e){
- Logger.getLogger(getClass().getName()).log(Level.WARNING,
- "Configured Ordinal is not an int number: " + configuredOrdinal, e);
- }
- }
- return ordinal;
- }
-
- @Override
- public String getName() {
- return urlResource.toExternalForm();
- }
-
- @Override
- public PropertyValue get(String key) {
- return getProperties().get(key);
- }
-
- @Override
- public Map<String, PropertyValue> getProperties() {
-
- return Collections.unmodifiableMap(values);
- }
-
- /**
- * Reads the configuration.
- * @param urlResource soure of the configuration.
- * @return the configuration read from the given resource URL.
- * @throws ConfigException if resource URL cannot be read.
- */
- protected Map<String, PropertyValue> readConfig(URL urlResource) throws IOException{
- try (InputStream is = urlResource.openStream()) {
- JsonStructure root = this.readerFactory.createReader(is, Charset.forName("UTF-8")).read();
-
- // Test added. H. Saly, 15. Aug. 2015
- if (!(root instanceof JsonObject)) {
- throw new ConfigException("Currently only JSON objects are supported");
- }
-
- Map<String, String> values = new HashMap<>();
- JSONVisitor visitor = new JSONVisitor((JsonObject)root, values);
- visitor.run();
- Map<String, PropertyValue> result = new HashMap<>();
- for(Map.Entry<String,String> en:values.entrySet()){
- result.put(en.getKey(), PropertyValue.of(en.getKey(), en.getValue(), getName()));
- }
- return result;
- }catch(IOException ioe){
- throw ioe;
- }catch (Exception t) {
- throw new IOException(format("Failed to read properties from %s", urlResource.toExternalForm()), t);
- }
- }
-
- @Override
- public boolean isScannable() {
- return true;
- }
-}