TAMAYA-182: Adapted modules to new builder patter changes, including tests. Fixed compile errors, or excluded modules from compilation (see root pom).
Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/commit/041f5998 Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/tree/041f5998 Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/diff/041f5998 Branch: refs/heads/master Commit: 041f5998509dce3893263cfc0262f3342cc9d6ea Parents: 2b1ef40 Author: anatole <[email protected]> Authored: Sun Oct 30 18:23:15 2016 +0100 Committer: anatole <[email protected]> Committed: Sun Oct 30 18:23:15 2016 +0100 ---------------------------------------------------------------------- apache-commons/pom.xml | 6 +- .../commons/CommonsConfigPropertySource.java | 11 +- .../commons/IniConfigurationFormat.java | 2 +- builder/pom.xml | 104 --- .../tamaya/builder/ConfigurationBuilder.java | 605 ------------- .../ProgrammaticConfigurationContext.java | 388 -------- .../tamaya/builder/PropertySourceBuilder.java | 118 --- .../tamaya/builder/SimplePropertySource.java | 86 -- .../org/apache/tamaya/builder/package-info.java | 28 - .../builder/ConfigurationBuilderTest.java | 907 ------------------- .../builder/TestANonSPIPropertyFilter.java | 35 - .../builder/TestBNonSPIPropertyFilter.java | 35 - .../tamaya/builder/TestPropertyFilter.java | 35 - .../tamaya/builder/TestPropertySource.java | 59 -- .../builder/TestPropertySourceProvider.java | 91 -- .../builder/TestPropertySourceProviderB.java | 91 -- .../builder/util/mockito/NotMockedAnswer.java | 57 -- .../tamaya/builder/util/types/CustomTypeA.java | 34 - .../tamaya/builder/util/types/CustomTypeB.java | 39 - .../tamaya/builder/util/types/CustomTypeC.java | 36 - .../types/CustomTypeCPropertyConverter.java | 29 - .../org.apache.tamaya.spi.PropertyConverter | 19 - .../org.apache.tamaya.spi.PropertyFilter | 19 - .../org.apache.tamaya.spi.PropertySource | 19 - ...org.apache.tamaya.spi.PropertySourceProvider | 19 - .../test/resources/configfiles/json/first.json | 4 - .../test/resources/configfiles/json/second.json | 4 - .../test/resources/configfiles/json/simple.json | 4 - .../test/resources/configfiles/json/third.json | 4 - .../test/resources/configfiles/other/simple.oml | 19 - configured-sysprops/pom.xml | 78 ++ .../se/ConfiguredSystemProperties.java | 340 +++++++ .../tamaya-configured-sysprops.iml | 17 + .../tamaya/consul/ConsulPropertySourceTest.java | 75 ++ .../apache/tamaya/consul/ConsulWriteTest.java | 80 ++ metamodel-simple/config/README.txt | 20 - metamodel-simple/config/test3.properties | 21 - metamodel-simple/pom.xml | 86 -- .../ConfigDirPropertySourceProvider.java | 81 -- .../MetainfConfigPropertySourceProvider.java | 62 -- ...org.apache.tamaya.spi.PropertySourceProvider | 20 - .../tamaya/metamodel/simple/SimpleTest.java | 26 - .../resources/META-INF/config/test.properties | 20 - .../resources/META-INF/config/test2.properties | 20 - metamodel-staged/pom.xml | 114 --- .../org/apache/tamaya/dsl/DSLFormatManager.java | 115 --- .../apache/tamaya/dsl/MetaConfiguration.java | 144 --- .../org/apache/tamaya/dsl/ProfileManager.java | 213 ----- .../apache/tamaya/dsl/TamayaConfigurator.java | 234 ----- .../tamaya/dsl/WrappedPropertySource.java | 100 -- .../DSLLoadingConfigurationProviderSpi.java | 82 -- .../NamedDSLPropertySourceProvider.java | 53 -- .../ResourceDSLPropertySourceProvider.java | 82 -- .../org/apache/tamaya/dsl/package-info.java | 23 - .../spi/BaseStagedPropertySourceProvider.java | 121 --- .../staged/spi/DSLPropertySourceProvider.java | 51 -- .../spi/StagedConfigPropertiesProvider.java | 137 --- .../apache/tamaya/staged/spi/package-info.java | 23 - ...g.apache.tamaya.spi.ConfigurationProviderSpi | 19 - ....tamaya.staged.spi.DSLPropertySourceProvider | 20 - .../apache/tamaya/dsl/ProfileManagerTest.java | 78 -- .../src/test/resources/GLOBAL.properties | 19 - .../src/test/resources/TEST.properties | 19 - .../src/test/resources/tamaya-TEST.yaml | 27 - .../src/test/resources/tamaya-config.yaml | 37 - .../tamaya/metamodel/dsl/DSLFormatManager.java | 115 +++ .../tamaya/metamodel/dsl/MetaConfiguration.java | 142 +++ .../tamaya/metamodel/dsl/ProfileManager.java | 213 +++++ .../metamodel/dsl/TamayaConfigurator.java | 234 +++++ .../metamodel/dsl/WrappedPropertySource.java | 100 ++ .../DSLLoadingConfigurationProviderSpi.java | 81 ++ .../NamedDSLPropertySourceProvider.java | 53 ++ .../ResourceDSLPropertySourceProvider.java | 82 ++ .../tamaya/metamodel/dsl/package-info.java | 23 + .../spi/BaseStagedPropertySourceProvider.java | 121 +++ .../spi/DSLPropertySourceProvider.java | 51 ++ .../spi/StagedConfigPropertiesProvider.java | 137 +++ .../tamaya/metamodel/spi/package-info.java | 23 + ...maya.metamodel.spi.DSLPropertySourceProvider | 20 + ...g.apache.tamaya.spi.ConfigurationProviderSpi | 19 + metamodel/src/test/resources/GLOBAL.properties | 19 + metamodel/src/test/resources/TEST.properties | 19 + metamodel/src/test/resources/tamaya-TEST.yaml | 27 + pom.xml | 72 +- propertysources/pom.xml | 90 ++ .../ConfigDirPropertySourceProvider.java | 81 ++ .../FileProprtyStoreProviderSpi.java | 85 ++ .../HazelcastProprtyStoreProviderSpi.java | 87 ++ .../MetainfConfigPropertySourceProvider.java | 62 ++ .../propertysources/PropertySourceBuilder.java | 119 +++ remote/pom.xml | 2 +- .../internal/FileProprtyStoreProviderSpi.java | 85 -- ...he.tamaya.store.spi.PropertyStoreProviderSpi | 18 - .../HazelcastProprtyStoreProviderSpi.java | 87 -- .../org.apache.tamaya.store.PropertyStore | 19 - sysprops/pom.xml | 89 -- .../se/ConfiguredSystemProperties.java | 353 -------- tamaya-classloader-support/pom.xml | 73 -- .../AbstractClassloaderAwareItemLoader.java | 268 ------ .../clsupport/CLAwareConfigurationContext.java | 105 --- .../tamaya/clsupport/CLAwareServiceContext.java | 248 ----- .../tamaya/clsupport/ServiceContainer.java | 306 ------- .../apache/tamaya/clsupport/package-info.java | 22 - .../org.apache.tamaya.spi.ServiceContext | 19 - ...he.tamaya.environment.spi.ContextProviderSpi | 23 - ...org.apache.tamaya.environment.spi.ContextSpi | 19 - ui/base/pom.xml | 2 +- ui/mutableconfig/pom.xml | 2 +- usagetracker/pom.xml | 113 +++ .../apache/tamaya/usagetracker/ConfigUsage.java | 129 +++ .../apache/tamaya/usagetracker/UsageStat.java | 312 +++++++ .../internal/DefaultConfigUsage.java | 176 ++++ .../internal/UsageTrackerFilter.java | 46 + .../tamaya/usagetracker/spi/ConfigUsageSpi.java | 101 +++ .../resources/META-INF/configmodel.properties | 35 + ...org.apache.tamaya.events.ConfigEventListener | 19 + ...org.apache.tamaya.model.spi.ModelProviderSpi | 22 + .../org.apache.tamaya.spi.PropertyFilter | 19 + ...pache.tamaya.usagetracker.spi.ConfigUsageSpi | 19 + .../tamaya/model/ConfigUsageStatsTest.java | 75 ++ .../java/test/model/TestConfigAccessor.java | 45 + .../resources/META-INF/configmodel.properties | 96 ++ .../META-INF/javaconfiguration.properties | 22 + ...org.apache.tamaya.model.spi.ModelProviderSpi | 19 + .../src/test/resources/examples/configmodel.ini | 76 ++ .../test/resources/examples/configmodel.json | 108 +++ .../resources/examples/configmodel.properties | 96 ++ .../src/test/resources/examples/configmodel.xml | 97 ++ .../test/resources/examples/configmodel.yaml | 106 +++ .../apache/tamaya/validation/ConfigModel.java | 78 ++ .../tamaya/validation/ConfigModelManager.java | 298 ++++++ .../apache/tamaya/validation/ModelTarget.java | 37 + .../apache/tamaya/validation/Validation.java | 203 +++++ .../tamaya/validation/ValidationResult.java | 59 ++ .../internal/ConfigDocumentationBean.java | 197 ++++ .../ConfiguredInlineModelProviderSpi.java | 69 ++ .../ConfiguredPropertiesModelProviderSpi.java | 154 ++++ .../ConfiguredResourcesModelProviderSpi.java | 160 ++++ .../ConfiguredTypeEventsModelPopulator.java | 90 ++ .../ConfiguredTypeEventsModelProvider.java | 51 ++ .../validation/spi/AbstractConfigModel.java | 88 ++ .../spi/ConfigDocumentationMBean.java | 53 ++ .../validation/spi/ConfigModelReader.java | 144 +++ .../tamaya/validation/spi/GroupModel.java | 110 +++ .../tamaya/validation/spi/ModelProviderSpi.java | 39 + .../tamaya/validation/spi/ParameterModel.java | 242 +++++ .../tamaya/validation/spi/SectionModel.java | 202 +++++ ...maya.validation.spi.ConfigDocumentationMBean | 38 + ...pache.tamaya.validation.spi.ModelProviderSpi | 41 + .../validation/ConfigModelProviderTest.java | 68 ++ .../tamaya/validation/ValidationTests.java | 52 ++ .../internal/ConfigDocumentationBeanTest.java | 108 +++ 152 files changed, 6988 insertions(+), 6703 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/apache-commons/pom.xml ---------------------------------------------------------------------- diff --git a/apache-commons/pom.xml b/apache-commons/pom.xml index 2b5eda0..47eea0b 100644 --- a/apache-commons/pom.xml +++ b/apache-commons/pom.xml @@ -22,12 +22,12 @@ under the License. <parent> <groupId>org.apache.tamaya.ext</groupId> - <artifactId>tamaya-integrations</artifactId> - <version>0.2-incubating-SNAPSHOT</version> + <artifactId>tamaya-sandbox</artifactId> + <version>0.3-incubating-SNAPSHOT</version> <relativePath>..</relativePath> </parent> <artifactId>tamaya-commons-config</artifactId> - <name>Apache Tamaya Commons Integration - Apache Commons</name> + <name>Apache Tamaya Modules - Apache Commons</name> <packaging>bundle</packaging> <dependencies> http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/apache-commons/src/main/java/org/apache/tamaya/integration/commons/CommonsConfigPropertySource.java ---------------------------------------------------------------------- diff --git a/apache-commons/src/main/java/org/apache/tamaya/integration/commons/CommonsConfigPropertySource.java b/apache-commons/src/main/java/org/apache/tamaya/integration/commons/CommonsConfigPropertySource.java index b2f2e82..2cbd4c3 100644 --- a/apache-commons/src/main/java/org/apache/tamaya/integration/commons/CommonsConfigPropertySource.java +++ b/apache-commons/src/main/java/org/apache/tamaya/integration/commons/CommonsConfigPropertySource.java @@ -22,6 +22,7 @@ package org.apache.tamaya.integration.commons; import org.apache.commons.configuration.Configuration; import org.apache.tamaya.spi.PropertySource; +import org.apache.tamaya.spi.PropertyValue; import java.util.HashMap; import java.util.Iterator; @@ -64,8 +65,9 @@ public class CommonsConfigPropertySource implements PropertySource { } @Override - public String get(String key) { - return commonsConfig.getString(key); + public PropertyValue get(String key) { + return PropertyValue.of(key, commonsConfig.getString(key), + getName()); } @Override @@ -78,4 +80,9 @@ public class CommonsConfigPropertySource implements PropertySource { } return config; } + + @Override + public boolean isScannable() { + return true; + } } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/apache-commons/src/main/java/org/apache/tamaya/integration/commons/IniConfigurationFormat.java ---------------------------------------------------------------------- diff --git a/apache-commons/src/main/java/org/apache/tamaya/integration/commons/IniConfigurationFormat.java b/apache-commons/src/main/java/org/apache/tamaya/integration/commons/IniConfigurationFormat.java index 0e21f4f..67cf7fc 100644 --- a/apache-commons/src/main/java/org/apache/tamaya/integration/commons/IniConfigurationFormat.java +++ b/apache-commons/src/main/java/org/apache/tamaya/integration/commons/IniConfigurationFormat.java @@ -50,7 +50,7 @@ public class IniConfigurationFormat implements ConfigurationFormat { String key = keyIter.next(); properties.put(key, sectionConfig.getString(key)); } - builder.addProperties(section, properties); + builder.addSectionProperties(section, properties); } } catch (ConfigurationException e) { throw new ConfigException("Failed to parse ini-file format from " + url, e); http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/builder/pom.xml ---------------------------------------------------------------------- diff --git a/builder/pom.xml b/builder/pom.xml deleted file mode 100644 index 96f6244..0000000 --- a/builder/pom.xml +++ /dev/null @@ -1,104 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -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-extensions</artifactId> - <version>0.3-incubating-SNAPSHOT</version> - </parent> - - <artifactId>tamaya-builder</artifactId> - <name>Apache Tamaya Modules - Builder</name> - <packaging>jar</packaging> <!-- bundle --> - - <inceptionYear>2015</inceptionYear> - - <dependencies> - <dependency> - <groupId>org.apache.tamaya</groupId> - <artifactId>tamaya-api</artifactId> - <version>${project.version}</version> - <scope>provided</scope> - </dependency> - - <dependency> - <groupId>org.apache.tamaya.ext</groupId> - <artifactId>tamaya-formats</artifactId> - <version>${project.version}</version> - </dependency> - - <dependency> - <groupId>org.apache.tamaya</groupId> - <artifactId>tamaya-core</artifactId> - <version>${project.version}</version> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>org.apache.tamaya.ext</groupId> - <artifactId>tamaya-spisupport</artifactId> - <version>${project.version}</version> - </dependency> - - <dependency> - <groupId>org.apache.tamaya.ext</groupId> - <artifactId>tamaya-json</artifactId> - <version>${project.version}</version> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>org.hamcrest</groupId> - <artifactId>java-hamcrest</artifactId> - </dependency> - - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - </dependency> - - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - </dependency> - - - </dependencies> - - <!--build> - <plugins> - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-bundle-plugin</artifactId> - <extensions>true</extensions> - <configuration> - <instructions> - <Export-Package> - org.apache.tamaya.builder - </Export-Package> - </instructions> - </configuration> - </plugin> - </plugins> - </build --> - -</project> http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/builder/src/main/java/org/apache/tamaya/builder/ConfigurationBuilder.java ---------------------------------------------------------------------- diff --git a/builder/src/main/java/org/apache/tamaya/builder/ConfigurationBuilder.java b/builder/src/main/java/org/apache/tamaya/builder/ConfigurationBuilder.java deleted file mode 100644 index afdc121..0000000 --- a/builder/src/main/java/org/apache/tamaya/builder/ConfigurationBuilder.java +++ /dev/null @@ -1,605 +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.builder; - -import org.apache.tamaya.ConfigException; -import org.apache.tamaya.Configuration; -import org.apache.tamaya.spi.PropertyConverter; -import org.apache.tamaya.TypeLiteral; -import org.apache.tamaya.format.ConfigurationData; -import org.apache.tamaya.format.ConfigurationFormats; -import org.apache.tamaya.format.FlattenedDefaultPropertySource; -import org.apache.tamaya.spi.ConfigurationContext; -import org.apache.tamaya.spi.PropertyFilter; -import org.apache.tamaya.spi.PropertySource; -import org.apache.tamaya.spi.PropertySourceProvider; -import org.apache.tamaya.spi.PropertyValueCombinationPolicy; -import org.apache.tamaya.spisupport.DefaultConfiguration; - -import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.Collection; -import java.util.Objects; - -import static java.lang.String.format; - -/** - * <p>Builder class used for building a configuration manually without relying - * only on the Service Provider Interface API.</p> - * - * <p><strong>Features of the builder</strong></p> - * - * <ol> - * <li>Adding of property converters manually</li> - * <li>Adding of property sources directly</li> - * <li>Adding of property sources via URL</li> - * <li>Adding of property source providers directly</li> - * <li>Enabling and disabling of via SPI mechanism provided resources as converters, - * property sources, etc.</li> - * </ol> - * - * <p><strong>Example</strong></p> - * - * <pre>{@code ConfigurationBuilder builder = new ConfigurationBuilder(); - * builder.disableProvidedPropertySources() // Do not load provided property - * .disableProvidedPropertySourceProviders() // sources and providers automatically - * .addPropertySource("file:/etc/conf.properties"); // Load properties from conf.properties - * - * Configuration config = builder.build(); - * }</pre> - * - * <p><strong>Support for configuration formats</strong></p> - * - * The configuration builder allows you to put property resources - * via a URL, as shown in the code example above, without implementing - * a {@link org.apache.tamaya.spi.PropertySource PropertySource} or providing an - * instance of a {@link org.apache.tamaya.spi.PropertySource PropertySource}. - * If a property resource in - * a specific format can be added to configuration builder or not depends - * on the available implementations of - * {@link org.apache.tamaya.format.ConfigurationFormat} in the classpath. - * Which formats are available can be checked via - * {@link org.apache.tamaya.format.ConfigurationFormats#getFormats()}. - */ -public class ConfigurationBuilder { - /** Builder used to create new ConfigurationContext instances. */ - private final ProgrammaticConfigurationContext.Builder contextBuilder = new ProgrammaticConfigurationContext.Builder(); - - /** - * Flag if the config has already been built. - * Configuration can be built only once - */ - private boolean built; - - /** - * Flag if all existing property converter service providers - * should be loaded if the configuration is build. - */ - private boolean loadProvidedPropertyConverters = true; - - /** - * Flag if all existing property source service providers - * will be loaded if the configuration is build. - */ - private boolean loadProvidedPropertySources = false; - private boolean loadProvidedPropertySourceProviders = false; - - private boolean isLoadProvidedPropertyFilters = false; - - /** - * Creates a new builder instance. - */ - public ConfigurationBuilder() { - } - - /** - * Allows to set configuration context during unit tests. - */ - ConfigurationBuilder setConfigurationContext(ConfigurationContext configurationContext) { - //noinspection deprecation - contextBuilder.setConfigurationContext(configurationContext); - return this; - } - - /** - * Adds one resources with properties in an arbitrary format - * to the configuration to be build. - * - * <p>If a specific format is supported depends on the available - * {@link org.apache.tamaya.format.ConfigurationFormat} implementations.</p> - * - * <pre>{@code URL resource = new URL("file:/etc/service/config.json"); - * - * builder.addPropertySources(resource);} - * </pre> - * - * @param url resource with properties for the the configuration to be build. - * - * @return the builder instance currently used - * - * @see org.apache.tamaya.format.ConfigurationFormat - * @see org.apache.tamaya.format.ConfigurationFormats#getFormats() - */ - public ConfigurationBuilder addPropertySource(URL url) { - try { - ConfigurationData data = getConfigurationDataFromURL(url); - - FlattenedDefaultPropertySource propertySource = new FlattenedDefaultPropertySource(data); - addPropertySources(propertySource); - } catch (IOException e) { - throw new ConfigException("Failed to read " + url.toString(), e); - } - return this; - } - - protected ConfigurationData getConfigurationDataFromURL(URL url) throws IOException { - ConfigurationData data = ConfigurationFormats.readConfigurationData(url); - - if (null == data) { - String mesg = format("No configuration format found which is able " + - "to read properties from %s.", url.toString()); - - throw new ConfigException(mesg); - } - - return data; - } - - /** - * Adds one or more resources with properties in an arbitrary format - * to the configuration to be build. - * - * <p>If a specific format is supported depends on the available - * {@link org.apache.tamaya.format.ConfigurationFormat} implementations.</p> - * - *<pre>{@code URL first = new URL("file:/etc/service/config.json"); - * URL second = new URL("file:/etc/defaults/values.properties"); - * - * builder.addPropertySources(first, second);} - *</pre> - * - * @param urls list of resources with properties for the configuration to be - * build. - * - * @return the builder instance currently used - * - * @see org.apache.tamaya.format.ConfigurationFormat - * @see org.apache.tamaya.format.ConfigurationFormats#getFormats() - */ - public ConfigurationBuilder addPropertySources(URL... urls) { - for(URL url:urls){ - if(url!=null){ - addPropertySource(url); - } - } - return this; - } - - /** - * Adds one or more resources with properties in an arbitrary format - * to the configuration to be build. - * - * <p>If a specific format is supported depends on the available - * {@link org.apache.tamaya.format.ConfigurationFormat} implementations.</p> - * - *<pre>{@code URL first = new URL("file:/etc/service/config.json"); - * URL second = new URL("file:/etc/defaults/values.properties"); - * - * builder.addPropertySources(first, second);} - *</pre> - * - * @param urls list of resources with properties for the configuration to be - * build. - * - * @return the builder instance currently used - * - * @see org.apache.tamaya.format.ConfigurationFormat - * @see org.apache.tamaya.format.ConfigurationFormats#getFormats() - */ - public ConfigurationBuilder addPropertySources(Collection<URL> urls) { - for(URL url:urls) { - if (url != null) { - addPropertySource(url); - } - } - return this; - } - - - /** - * Adds one or more resources with properties in an arbitrary format - * to the configuration to be build. - * - * <p>If a specific format is supported depends on the available - * {@link org.apache.tamaya.format.ConfigurationFormat} implementations.</p> - * - *<pre>{@code builder.addPropertySources("file:/etc/service/config.json", - * "file:/etc/defaults/values.properties");} - *</pre> - * - * @param urls list of resources with properties for the configuration to be - * build. - * - * @return the builder instance currently used - * - * @see org.apache.tamaya.format.ConfigurationFormat - * @see org.apache.tamaya.format.ConfigurationFormats#getFormats() - */ - public ConfigurationBuilder addPropertySources(String... urls) { - for(String url:urls) { - if (url != null) { - try{ - addPropertySource(new URL(url)); - } catch(Exception e){ - throw new ConfigException("Invalid URL: " + url); - } - } - } - return this; - } - - /** - * Adds one or more property source instances to the configuration to be build. - * - *<pre>{@code PropertySource first = new CustomPropertySource(); - * PropertySource second = new YetAnotherPropertySource(); - * - * builder.addPropertySources(first, second)}; - *</pre> - * - * @param sources list of property source instances with properties for the - * configuration to be build. - * - * @return the builder instance currently used - * - * @see org.apache.tamaya.spi.PropertySource - */ - public ConfigurationBuilder addPropertySources(PropertySource... sources){ - checkBuilderState(); - - contextBuilder.addPropertySources(Objects.requireNonNull(sources)); - return this; - } - - private void checkBuilderState() { - if (built) { - throw new IllegalStateException("Configuration has already been build."); - } - } - - /** - * Adds one or more property source provider instances to the configuration to be build. - * - * <pre>{@code PropertySourceProvider jc = new JavaConfigurationProvider(); - * - * builder.addPropertySources(jc)}; - * </pre> - * - * @param providers list of property source provider instances each providing a set - * of property source instances for the configuration to be build. - * - * @return the builder instance currently used - * - * @see org.apache.tamaya.spi.PropertySourceProvider - */ - public ConfigurationBuilder addPropertySourceProviders(PropertySourceProvider... providers){ - contextBuilder.addPropertySourceProviders(providers); - return this; - } - - /** - * Adds one or more property filter instances to the configuration to be build. - * - * <pre>{@code PropertyFilter quoteReplacingFilter = new QuoteFilter(); - * PropertyFilter commaRemovingFilter = new CommaFilter(); - * - * builder.addPropertyFilters(commaRemovingFilter, quoteReplacingFilter)}; - * </pre> - * - * @param filters list of property filter instances which should be applied - * to the properties of the configuration to be build. - * - * @return the builder instance currently used - * - * @see org.apache.tamaya.spi.PropertyFilter - * @see #disableProvidedPropertyFilters() - * @see #enabledProvidedPropertyFilters() - */ - public ConfigurationBuilder addPropertyFilters(PropertyFilter... filters){ - Objects.requireNonNull(filters); - - contextBuilder.addPropertyFilters(filters); - return this; - } - - - /** - * @param propertyValueCombinationPolicy combination policy to use for this builder. - * @return the builder instance currently in use. - */ - public ConfigurationBuilder setPropertyValueCombinationPolicy(PropertyValueCombinationPolicy propertyValueCombinationPolicy){ - contextBuilder.setPropertyValueCombinationPolicy(propertyValueCombinationPolicy); - return this; - } - - /** - * Adds a property converter for the a given type to the configuration to - * be build. - * - * <pre>{@code PropertyConverter<MyType> converter = value -> new MyType(value, 42); - * - * builder.addPropertyConverter(MyType.class, converter} - * </pre> - * - * @param <T> the type of the configuration - * @param type the required target type the converter should be applied to - * @param converter the converter to be used to convert the string property - * to the given target type. - * - * @return the builder instance currently used - * - * @see org.apache.tamaya.spi.PropertyConverter - * @see #enableProvidedPropertyConverters() - * @see #disableProvidedPropertyConverters() - */ - public <T> ConfigurationBuilder addPropertyConverter(Class<T> type, PropertyConverter<T> converter) { - Objects.requireNonNull(type); - Objects.requireNonNull(converter); - return addPropertyConverter(TypeLiteral.of(type), (PropertyConverter<Object>)converter); - } - - /** - * Adds a propertyConverter of a given type. - * - * @param <T> the type of the configuration - * @param type type literal of this converter. - * @param propertyConverter property converter. - * @return the builder instance currently used - */ - public <T> ConfigurationBuilder addPropertyConverter(TypeLiteral<T> type, PropertyConverter<T> propertyConverter){ - Objects.requireNonNull(type); - Objects.requireNonNull(propertyConverter); - contextBuilder.addPropertyConverter(type, propertyConverter); - return this; - } - - /** - * Checks if the automatic loading of all {@link org.apache.tamaya.spi.PropertyConverter - * PropertyConverter} service providers is enabled or disabled. - * - * @return {@code true} if the automatic loading is enabled, - * otherwise {@code false}. - * - * @see #enableProvidedPropertyConverters() - * @see #disableProvidedPropertyConverters() - * @see #addPropertyConverter(Class, org.apache.tamaya.spi.PropertyConverter) - * @see #addPropertyConverter(org.apache.tamaya.TypeLiteral, org.apache.tamaya.spi.PropertyConverter) - */ - public boolean isPropertyConverterLoadingEnabled() { - return loadProvidedPropertyConverters; - } - - /** - * Enables the loading of all {@link org.apache.tamaya.spi.PropertyConverter} - * service providers. - * - * @return the builder instance currently used - * - * @see org.apache.tamaya.spi.PropertyConverter - * @see #disableProvidedPropertyConverters() - * @see #enableProvidedPropertyConverters() - */ - public ConfigurationBuilder enableProvidedPropertyConverters() { - checkBuilderState(); - - loadProvidedPropertyConverters = true; - - return this; - } - - /** - * Disables the automatic loading of all {@link org.apache.tamaya.spi.PropertyConverter} - * service providers. - * - * @return the builder instance currently used - * - * @see org.apache.tamaya.spi.PropertyConverter - * @see #enableProvidedPropertyConverters() - * @see #addPropertyConverter(Class, org.apache.tamaya.spi.PropertyConverter) - */ - public ConfigurationBuilder disableProvidedPropertyConverters() { - checkBuilderState(); - - loadProvidedPropertyConverters = false; - - return this; - } - - - /** - * Enables the automatic loading of all {@link org.apache.tamaya.spi.PropertySource} - * service providers. - * - * @return the builder instance currently used - * - * @see org.apache.tamaya.spi.PropertySource - * @see #disableProvidedPropertySources() - */ - public ConfigurationBuilder enableProvidedPropertySources() { - checkBuilderState(); - - loadProvidedPropertySources = true; - - return this; - } - - /** - * Checks if the automatic loading of all {@link org.apache.tamaya.spi.PropertySource - * PropertySource} service providers is enabled or disabled. - * - * @return {@code true} if the automatic loading is enabled, - * otherwise {@code false}. - */ - public boolean isPropertySourcesLoadingEnabled() { - return loadProvidedPropertySources; - } - - - /** - * Checks if the automatic loading of all {@link org.apache.tamaya.spi.PropertyFilter - * PropertyFilter} service providers is enabled or disabled. - * - * @return {@code true} if the automatic loading is enabled, - * otherwise {@code false}. - */ - public boolean isPropertyFilterLoadingEnabled() { - return isLoadProvidedPropertyFilters; - } - - /** - * Enables the automatic loading of all {@link org.apache.tamaya.spi.PropertyFilter} - * service providers. - * - * @return the builder instance currently used - * - * @see org.apache.tamaya.spi.PropertyFilter - * @see #disableProvidedPropertyFilters() - * @see #addPropertyFilters(org.apache.tamaya.spi.PropertyFilter...) - */ - public ConfigurationBuilder enabledProvidedPropertyFilters() { - checkBuilderState(); - - isLoadProvidedPropertyFilters = true; - - return this; - } - - /** - * Disables the automatic loading of all {@link org.apache.tamaya.spi.PropertyFilter} - * service providers. - * - * @see org.apache.tamaya.spi.PropertyFilter - * @see #enabledProvidedPropertyFilters() - * @see #addPropertyFilters(org.apache.tamaya.spi.PropertyFilter...) - * - * @return the builder instance currently used - */ - public ConfigurationBuilder disableProvidedPropertyFilters() { - checkBuilderState(); - - isLoadProvidedPropertyFilters = false; - - return this; - } - - /** - * Disables the automatic loading of all {@link org.apache.tamaya.spi.PropertySource} - * service providers. - * - * @return the builder instance currently used - * - * @see org.apache.tamaya.spi.PropertySource - * @see #enableProvidedPropertySources() - */ - public ConfigurationBuilder disableProvidedPropertySources() { - checkBuilderState(); - - loadProvidedPropertySources = false; - - return this; - } - - /** - * Enables the automatic loading of {@link org.apache.tamaya.spi.PropertySourceProvider - * property source providers} provided via the SPI API. - * - * @return the builder instance currently used - * - * @see org.apache.tamaya.spi.PropertySourceProvider - */ - public ConfigurationBuilder enableProvidedPropertySourceProviders() { - checkBuilderState(); - - loadProvidedPropertySourceProviders = true; - - return this; - } - - /** - * Disables the automatic loading of {@link org.apache.tamaya.spi.PropertySourceProvider - * property source providers} provided via the SPI API. - * - * @return the builder instance currently used - */ - public ConfigurationBuilder disableProvidedPropertySourceProviders() { - checkBuilderState(); - - loadProvidedPropertySourceProviders = false; - - return this; - } - - /** - * Checks if the automatic loading of {@link org.apache.tamaya.spi.PropertySourceProvider - * PropertySourceProviders} is enabled or disabled. - * - * @return {@code true} if the automatic loading is enabled, - * otherwise {@code false}. - */ - public boolean isPropertySourceProvidersLoadingEnabled() { - return loadProvidedPropertySourceProviders; - } - - //X TODO think on a functionality/API for using the default PropertyConverters and use the configured ones here - //X TODO as overrides used first. - - - /** - * Builds a new configuration based on the configuration of this builder instance. - * - * @return a new {@link org.apache.tamaya.Configuration configuration instance}, - * never {@code null}. - */ - public Configuration build() { - checkBuilderState(); - - built = true; - - contextBuilder.loadProvidedPropertyConverters(isPropertyConverterLoadingEnabled()); - contextBuilder.loadProvidedPropertySources(isPropertySourcesLoadingEnabled()); - contextBuilder.loadProvidedPropertySourceProviders(isPropertySourceProvidersLoadingEnabled()); - contextBuilder.loadProvidedPropertyFilters(isLoadProvidedPropertyFilters); - - return new DefaultConfiguration(contextBuilder.build()); - } - - /** - * Mapper to map a URL given as string to an URL instance. - */ - private static class StringToURLMapper { - public URL apply(String u) { - try { - return new URL(u); - } catch (MalformedURLException e) { - throw new ConfigException(u + " is not a valid URL", e); - } - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/builder/src/main/java/org/apache/tamaya/builder/ProgrammaticConfigurationContext.java ---------------------------------------------------------------------- diff --git a/builder/src/main/java/org/apache/tamaya/builder/ProgrammaticConfigurationContext.java b/builder/src/main/java/org/apache/tamaya/builder/ProgrammaticConfigurationContext.java deleted file mode 100644 index 68e770d..0000000 --- a/builder/src/main/java/org/apache/tamaya/builder/ProgrammaticConfigurationContext.java +++ /dev/null @@ -1,388 +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.builder; - - -import org.apache.tamaya.spi.PropertyConverter; -import org.apache.tamaya.TypeLiteral; -import org.apache.tamaya.spi.ConfigurationContext; -import org.apache.tamaya.spi.ConfigurationContextBuilder; -import org.apache.tamaya.spi.PropertyFilter; -import org.apache.tamaya.spi.PropertySource; -import org.apache.tamaya.spi.PropertySourceProvider; -import org.apache.tamaya.spi.PropertyValueCombinationPolicy; -import org.apache.tamaya.spi.ServiceContextManager; -import org.apache.tamaya.spisupport.PriorityServiceComparator; -import org.apache.tamaya.spisupport.PropertyConverterManager; -import org.apache.tamaya.spisupport.PropertySourceComparator; - -import javax.annotation.Priority; -import java.util.*; -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReadWriteLock; -import java.util.concurrent.locks.ReentrantReadWriteLock; -import java.util.logging.Logger; - -/** - * Implementation of the {@link org.apache.tamaya.spi.ConfigurationContext} - * used by the {@link org.apache.tamaya.builder.ConfigurationBuilder} - * internally. - */ -class ProgrammaticConfigurationContext implements ConfigurationContext { - - private static final Comparator<PropertySource> PS_COMPARATOR = new PropertySourceComparator(); - private static final Comparator<Object> COMP_COMPARATOR = new PriorityServiceComparator(); - /** - * The logger used. - */ - private final static Logger LOG = Logger.getLogger(ProgrammaticConfigurationContext.class.getName()); - /** - * Cubcomponent handling {@link org.apache.tamaya.spi.PropertyConverter} instances. - */ - private PropertyConverterManager propertyConverterManager = new PropertyConverterManager(); - - /** - * The current unmodifiable list of loaded {@link org.apache.tamaya.spi.PropertySource} instances. - */ - private List<PropertySource> immutablePropertySources = new ArrayList<>(); - - /** - * The current unmodifiable list of loaded {@link org.apache.tamaya.spi.PropertyFilter} instances. - */ - private List<PropertyFilter> immutablePropertyFilters = new ArrayList<>(); - - /** - * The overriding policy used when combining PropertySources registered to evalute the final configuration - * values. - */ - private PropertyValueCombinationPolicy propertyValueCombinationPolicy; - - /** - * Lock for internal synchronization. - */ - private final ReadWriteLock propertySourceLock = new ReentrantReadWriteLock(); - - - /** - * The first time the Configuration system gets invoked we do initialize - * all our {@link org.apache.tamaya.spi.PropertySource}s and - * {@link org.apache.tamaya.spi.PropertyFilter}s which are known at startup. - */ - @SuppressWarnings("unchecked") - public ProgrammaticConfigurationContext(Builder builder) { - propertyConverterManager = new PropertyConverterManager(builder.loadProvidedPropertyConverters); - - List<PropertySource> sources = getAllPropertySources(builder); - Collections.sort(sources, PS_COMPARATOR); - immutablePropertySources = Collections.unmodifiableList(sources); - - - List<PropertyFilter> filters = getPropertyFilters(builder); - Collections.sort(filters, COMP_COMPARATOR); - immutablePropertyFilters = Collections.unmodifiableList(filters); - - - propertyValueCombinationPolicy = builder.propertyValueCombinationPolicy; - for(Map.Entry<TypeLiteral<?>, List<PropertyConverter<?>>> en: builder.propertyConverters.entrySet()){ - if(en!=null){ - for(PropertyConverter pv:en.getValue()) { - propertyConverterManager.register(en.getKey(), pv); - } - } - } - - LOG.info("Using " + immutablePropertySources.size() + " property sources: " + immutablePropertySources); - LOG.info("Using " + immutablePropertyFilters.size() + " property filters: " + immutablePropertyFilters); - LOG.info("Using PropertyValueCombinationPolicy: " + propertyValueCombinationPolicy); - } - - private List<PropertyFilter> getPropertyFilters(Builder builder) { - List<PropertyFilter> provided = new ArrayList<>(); - if(builder.loadProvidedPropertyFilters) { - provided.addAll(ServiceContextManager.getServiceContext().getServices(PropertyFilter.class)); - } - for(PropertyFilter pf:builder.propertyFilters) { - if (pf != null) { - provided.add(pf); - } - } - return provided; - } - - private List<PropertySource> getAllPropertySources(Builder builder) { - List<PropertySource> provided = new ArrayList<>(); - if(builder.loadProvidedPropertySources) { - provided.addAll(ServiceContextManager.getServiceContext().getServices(PropertySource.class)); - } - for(PropertySource ps:builder.propertySources){ - if(ps!=null){ - provided.add(ps); - } - } - if (builder.loadProvidedPropertySourceProviders) { - List<PropertySourceProvider> providers = ServiceContextManager.getServiceContext() - .getServices(PropertySourceProvider.class); - for (PropertySourceProvider provider : providers) { - for(PropertySource ps:provider.getPropertySources()) { - if(ps!=null) { - provided.addAll(provider.getPropertySources()); - } - } - } - } - return provided; - } - - public void addPropertySources(PropertySource... propertySourcesToAdd) { - Lock writeLock = propertySourceLock.writeLock(); - try { - writeLock.lock(); - List<PropertySource> provided = new ArrayList<>(); - for(PropertySource ps:propertySourcesToAdd){ - if(ps!=null){ - provided.add(ps); - } - } - this.immutablePropertySources = Collections.unmodifiableList(provided); - } finally { - writeLock.unlock(); - } - } - - /** - * Order property source reversely, the most important come first. - * - * @param source1 the first PropertySource - * @param source2 the second PropertySource - * @return the comparison result. - */ - private int comparePropertySources(PropertySource source1, PropertySource source2) { - - //X TODO this method duplicates org.apache.tamaya.core.internal.DefaultConfigurationContext.PropertySourceComparator.comparePropertySources() - //X maybe we should extract the Comperator in an own class for real code-reuse (copy paste == bad code reuse) - - if (source1.getOrdinal() < source2.getOrdinal()) { - return -1; - } else if (source1.getOrdinal() > source2.getOrdinal()) { - return 1; - } else { - return source1.getClass().getName().compareTo(source2.getClass().getName()); - } - } - - /** - * Compare 2 filters for ordering the filter chain. - * - * @param filter1 the first filter - * @param filter2 the second filter - * @return the comparison result - */ - private int comparePropertyFilters(PropertyFilter filter1, PropertyFilter filter2) { - - //X TODO this method duplicates org.apache.tamaya.core.internal.DefaultConfigurationContext.PropertySourceComparator.comparePropertyFilters() - //X maybe we should extract the Comperator in an own class for real code-reuse (copy paste == bad code reuse) - - Priority prio1 = filter1.getClass().getAnnotation(Priority.class); - Priority prio2 = filter2.getClass().getAnnotation(Priority.class); - int ord1 = prio1 != null ? prio1.value() : 0; - int ord2 = prio2 != null ? prio2.value() : 0; - - if (ord1 < ord2) { - return -1; - } else if (ord1 > ord2) { - return 1; - } else { - return filter1.getClass().getName().compareTo(filter2.getClass().getName()); - } - } - - @Override - public List<PropertySource> getPropertySources() { - return immutablePropertySources; - } - - public <T> void addPropertyConverter(TypeLiteral<T> typeToConvert, PropertyConverter<T> propertyConverter) { - propertyConverterManager.register(typeToConvert, propertyConverter); - LOG.info("Added PropertyConverter: " + propertyConverter.getClass().getName()); - } - - @Override - public Map<TypeLiteral<?>, List<PropertyConverter<?>>> getPropertyConverters() { - return propertyConverterManager.getPropertyConverters(); - } - - @Override - public <T> List<PropertyConverter<T>> getPropertyConverters(TypeLiteral<T> targetType) { - return propertyConverterManager.getPropertyConverters(targetType); - } - - @Override - public List<PropertyFilter> getPropertyFilters() { - return immutablePropertyFilters; - } - - @Override - public PropertyValueCombinationPolicy getPropertyValueCombinationPolicy() { - return propertyValueCombinationPolicy; - } - - - @Override - public ConfigurationContextBuilder toBuilder() { - // @todo Check if it could be useful to support this method, Oliver B. Fischer - throw new RuntimeException("This method is currently not supported."); - } - - /** - * The Builder for {@link ProgrammaticConfigurationContext} - */ - public final static class Builder { - /** - * The current unmodifiable list of loaded {@link org.apache.tamaya.spi.PropertySource} instances. - */ - private final List<PropertySource> propertySources = new ArrayList<>(); - - /** - * The current unmodifiable list of loaded {@link org.apache.tamaya.spi.PropertyFilter} instances. - */ - private final List<PropertyFilter> propertyFilters = new ArrayList<>(); - - private final Map<TypeLiteral<?>, List<PropertyConverter<?>>> propertyConverters = new HashMap<>(); - - /** - * The overriding policy used when combining PropertySources registered to evalute the final configuration - * values. - */ - private PropertyValueCombinationPolicy propertyValueCombinationPolicy = - PropertyValueCombinationPolicy.DEFAULT_OVERRIDING_COLLECTOR; - - private boolean loadProvidedPropertyConverters; - private boolean loadProvidedPropertySources; - private boolean loadProvidedPropertySourceProviders; - private boolean loadProvidedPropertyFilters; - - public Builder setPropertyValueCombinationPolicy(PropertyValueCombinationPolicy policy) { - this.propertyValueCombinationPolicy = Objects.requireNonNull(policy); - return this; - } - - public Builder addPropertySources(PropertySource... propertySources) { - for (PropertySource ps : propertySources) { - if (ps != null) { - this.propertySources.add(ps); - } - } - return this; - } - - public Builder addPropertySources(Collection<PropertySource> propertySources) { - for (PropertySource ps : propertySources) { - if (ps != null) { - this.propertySources.add(ps); - } - } - return this; - } - - public Builder addPropertySourceProviders(PropertySourceProvider... propertySourceProviders) { - for (PropertySourceProvider ps : propertySourceProviders) { - if (ps != null) { - this.propertySources.addAll(ps.getPropertySources()); - } - } - return this; - } - - public Builder addPropertySourceProviders(Collection<PropertySourceProvider> propertySourceProviders) { - for (PropertySourceProvider ps : propertySourceProviders) { - if (ps != null) { - this.propertySources.addAll(ps.getPropertySources()); - } - } - return this; - } - - public Builder addPropertyFilters(PropertyFilter... propertyFIlter) { - for (PropertyFilter pf : propertyFIlter) { - if (pf != null) { - this.propertyFilters.add(pf); - } - } - return this; - } - - public Builder addPropertyFilters(Collection<PropertyFilter> propertyFIlter) { - for (PropertyFilter pf : propertyFIlter) { - if (pf != null) { - this.propertyFilters.add(pf); - } - } - return this; - } - - /** - * Should be never used. - */ - @Deprecated - public Builder setConfigurationContext(ConfigurationContext configurationContext) { - this.addPropertySources(configurationContext.getPropertySources()); - this.addPropertyFilters(configurationContext.getPropertyFilters()); - this.propertyValueCombinationPolicy = Objects.requireNonNull( - configurationContext.getPropertyValueCombinationPolicy()); - return this; - } - - //X TODO think on a functonality/API for using the default PropertyConverters and use the configured ones here - //X TODO as overrides used first. - - public <T> Builder addPropertyConverter(TypeLiteral<T> type, PropertyConverter<T> propertyConverter) { - if(!propertyConverters.containsKey(type)){ - List<PropertyConverter<?>> convList = new ArrayList<>(); - convList.add(propertyConverter); - propertyConverters.put(type, convList); - } - return this; - } - - public ConfigurationContext build() { - return new ProgrammaticConfigurationContext(this); - } - - - public void loadProvidedPropertyConverters(boolean state) { - loadProvidedPropertyConverters = state; - } - - public void loadProvidedPropertySources(boolean state) { - loadProvidedPropertySources = state; - } - - public void loadProvidedPropertySourceProviders(boolean state) { - loadProvidedPropertySourceProviders = state; - } - - public void loadProvidedPropertyFilters(boolean state) { - loadProvidedPropertyFilters = state; - } - - } - - - -} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/builder/src/main/java/org/apache/tamaya/builder/PropertySourceBuilder.java ---------------------------------------------------------------------- diff --git a/builder/src/main/java/org/apache/tamaya/builder/PropertySourceBuilder.java b/builder/src/main/java/org/apache/tamaya/builder/PropertySourceBuilder.java deleted file mode 100644 index 481a80c..0000000 --- a/builder/src/main/java/org/apache/tamaya/builder/PropertySourceBuilder.java +++ /dev/null @@ -1,118 +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.builder; - -import org.apache.tamaya.spi.PropertySource; - -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; - -/** - * Simple builder for building a {@link org.apache.tamaya.spi.PropertySource}. - */ -public final class PropertySourceBuilder { - /** The ordinal to be used. */ - private int ordinal; - /** The name to be used. */ - private final String name; - /** The properties. */ - private final Map<String,String> properties = new HashMap<>(); - - /** private constructor. */ - private PropertySourceBuilder(String name){ - this.name = Objects.requireNonNull(name); - } - - /** - * Gets a new instance of a builder. - * @param name The name of the property source, not null. - * @return a new instance. - */ - public static PropertySourceBuilder of(String name){ - return new PropertySourceBuilder(name); - } - - /** - * Gets a new instance of a builder. - * @param name The name of the property source, not null. - * @return a new instance. - */ - public static PropertySourceBuilder from(String name){ - return new PropertySourceBuilder(name); - } - - /** - * Sets a new property key/value. - * @param key the property key, not null. - * @param value the property value, not null. - * @return the bulder for chaining. - */ - public PropertySourceBuilder put(String key, String value){ - this.properties.put(key, value); - return this; - } - - /** - * Put all the given key, values. - * @param values the new key/values, not null. - * @return the bulder for chaining. - */ - public PropertySourceBuilder putAll(Map<String, String> values){ - this.properties.putAll(values); - return this; - } - - /** - * Sets the ordinal to be used explicitly (instead evaluating it using {@code tamaya.ordinal}. - * @param ordinal the explicit ordinal to be used. - * @return the bulder for chaining. - */ - public PropertySourceBuilder withOrdinal(int ordinal){ - this.ordinal = ordinal; - return this; - } - - /** - * Puts all values from the given property source. - * @param propertySource the property source, not null. - * @return the bulder for chaining. - */ - public PropertySourceBuilder putAll(PropertySource propertySource){ - this.properties.putAll(propertySource.getProperties()); - return this; - } - - /** - * Creates a new immutable {@link org.apache.tamaya.spi.PropertySource} instance. - * @return a new immutable {@link org.apache.tamaya.spi.PropertySource} instance, never null. - */ - public PropertySource build(){ - return new SimplePropertySource(name, properties); - } - - @Override - public String toString() { - return "PropertySourceBuilder{" + - "ordinal=" + ordinal + - ", name='" + name + '\'' + - ", properties=" + properties + - '}'; - } -} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/builder/src/main/java/org/apache/tamaya/builder/SimplePropertySource.java ---------------------------------------------------------------------- diff --git a/builder/src/main/java/org/apache/tamaya/builder/SimplePropertySource.java b/builder/src/main/java/org/apache/tamaya/builder/SimplePropertySource.java deleted file mode 100644 index 085bd9a..0000000 --- a/builder/src/main/java/org/apache/tamaya/builder/SimplePropertySource.java +++ /dev/null @@ -1,86 +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.builder; - -import org.apache.tamaya.spi.PropertySource; -import org.apache.tamaya.spi.PropertyValue; - -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; -import java.util.logging.Level; -import java.util.logging.Logger; - -/** -* Simple property source implementation using a map. -*/ -public class SimplePropertySource implements PropertySource { - /** The properties. */ - private final Map<String, String> properties; - /** The source's name. */ - private final String name; - - public SimplePropertySource(String name, Map<String, String> properties){ - this.properties = new HashMap<>(properties); - this.name = Objects.requireNonNull(name); - } - - @Override - 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 getDefaultOrdinal(); - } - - public int getDefaultOrdinal(){ - return 0; - } - - @Override - public String getName() { - return name; - } - - @Override - public PropertyValue get(String key) { - return null; - } - - @Override - public Map<String, String> getProperties() { - return this.properties; - } - - @Override - public boolean isScannable() { - return false; - } - - @Override - public String toString(){ - return "SimplePropertySource(name="+name+", numProps="+properties.size()+")"; - } -} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/builder/src/main/java/org/apache/tamaya/builder/package-info.java ---------------------------------------------------------------------- diff --git a/builder/src/main/java/org/apache/tamaya/builder/package-info.java b/builder/src/main/java/org/apache/tamaya/builder/package-info.java deleted file mode 100644 index 24c86a9..0000000 --- a/builder/src/main/java/org/apache/tamaya/builder/package-info.java +++ /dev/null @@ -1,28 +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. - */ -/** - * This package provides - * {@link org.apache.tamaya.builder.ConfigurationBuilder a configuration - * builder} that allows to build a configuration manually without - * using exclusively on the Service Provider Interface API of Tamaya. - * - * @see org.apache.tamaya.builder.ConfigurationBuilder - * @see org.apache.tamaya.Configuration - */ -package org.apache.tamaya.builder; \ No newline at end of file
