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 2017/11/14 09:33:28 UTC
[6/9] incubator-tamaya-extensions git commit: TAMAYA-318 Moved
spi-support as API base implementation package to remove code duplicates.
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/2d0ef4b9/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/DefaultConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/DefaultConfiguration.java b/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/DefaultConfiguration.java
deleted file mode 100644
index 55399de..0000000
--- a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/DefaultConfiguration.java
+++ /dev/null
@@ -1,251 +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.spisupport;
-
-import org.apache.tamaya.ConfigException;
-import org.apache.tamaya.ConfigOperator;
-import org.apache.tamaya.ConfigQuery;
-import org.apache.tamaya.Configuration;
-import org.apache.tamaya.TypeLiteral;
-import org.apache.tamaya.spi.ConfigurationContext;
-import org.apache.tamaya.spi.ConversionContext;
-import org.apache.tamaya.spi.PropertyConverter;
-import org.apache.tamaya.spi.PropertySource;
-import org.apache.tamaya.spi.PropertyValue;
-import org.apache.tamaya.spi.PropertyValueCombinationPolicy;
-import org.apache.tamaya.spi.ServiceContextManager;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-/**
- * Implementation of the Configuration API. This class uses the current {@link ConfigurationContext} to evaluate the
- * chain of {@link PropertySource} and {@link org.apache.tamaya.spi.PropertyFilter}
- * instance to evaluate the current Configuration.
- */
-public class DefaultConfiguration implements Configuration {
- /**
- * The logger.
- */
- private static final Logger LOG = Logger.getLogger(DefaultConfiguration.class.getName());
-
- /**
- * The current {@link ConfigurationContext} of the current instance.
- */
- private final ConfigurationContext configurationContext;
-
- /**
- * EvaluationStrategy
- */
- private ConfigValueEvaluator configEvaluator = loadConfigValueEvaluator();
-
- private ConfigValueEvaluator loadConfigValueEvaluator() {
- ConfigValueEvaluator eval = null;
- try{
- eval = ServiceContextManager.getServiceContext()
- .getService(ConfigValueEvaluator.class);
- }catch(Exception e){
- LOG.log(Level.WARNING, "Failed to load ConfigValueEvaluator from ServiceContext, using default.", e);
- }
- if(eval==null){
- eval = new DefaultConfigValueEvaluator();
- }
- return eval;
- }
-
-
- /**
- * Constructor.
- * @param configurationContext The configuration Context to be used.
- */
- public DefaultConfiguration(ConfigurationContext configurationContext){
- this.configurationContext = Objects.requireNonNull(configurationContext);
- }
-
- /**
- * Get a given value, filtered with the context's filters as needed.
- * @param key the property's key, not null.
- * @return the filtered value, or null.
- */
- @Override
- public String get(String key) {
- PropertyValue value = configEvaluator.evaluteRawValue(key, configurationContext);
- if(value==null || value.getValue()==null){
- return null;
- }
- value = PropertyFiltering.applyFilter(value, configurationContext);
- if(value!=null){
- return value.getValue();
- }
- return null;
- }
-
- /**
- * Evaluates the raw value using the context's PropertyValueCombinationPolicy.
- * @param key the key, not null.
- * @return the value, before filtering is applied.
- */
- protected PropertyValue evaluteRawValue(String key) {
- List<PropertySource> propertySources = configurationContext.getPropertySources();
- PropertyValue filteredValue = null;
- PropertyValueCombinationPolicy combinationPolicy = this.configurationContext
- .getPropertyValueCombinationPolicy();
- for (PropertySource propertySource : propertySources) {
- filteredValue = combinationPolicy.collect(filteredValue, key, propertySource);
- }
- return filteredValue;
- }
-
-
- @Override
- public String getOrDefault(String key, String defaultValue) {
- String val = get(key);
- if(val==null){
- return defaultValue;
- }
- return val;
- }
-
- @Override
- public <T> T getOrDefault(String key, Class<T> type, T defaultValue) {
- T val = get(key, type);
- if(val==null){
- return defaultValue;
- }
- return val;
- }
-
- /**
- * Get the current properties, composed by the loaded {@link PropertySource} and filtered
- * by registered {@link org.apache.tamaya.spi.PropertyFilter}.
- *
- * @return the final properties.
- */
- @Override
- public Map<String, String> getProperties() {
- Map<String, PropertyValue> filtered = PropertyFiltering.applyFilters(
- configEvaluator.evaluateRawValues(configurationContext),
- configurationContext);
- Map<String,String> result = new HashMap<>();
- for(PropertyValue val:filtered.values()){
- if(val.getValue()!=null) {
- result.put(val.getKey(), val.getValue());
- // TODO: Discuss metadata handling...
- result.putAll(val.getMetaEntries());
- }
- }
- return result;
- }
-
-
- /**
- * Accesses the current String value for the given key and tries to convert it
- * using the {@link PropertyConverter} instances provided by the current
- * {@link ConfigurationContext}.
- *
- * @param key the property's absolute, or relative path, e.g. @code
- * a/b/c/d.myProperty}.
- * @param type The target type required, not null.
- * @param <T> the value type
- * @return the converted value, never null.
- */
- @Override
- public <T> T get(String key, Class<T> type) {
- return get(key, (TypeLiteral<T>)TypeLiteral.of(type));
- }
-
- /**
- * Accesses the current String value for the given key and tries to convert it
- * using the {@link PropertyConverter} instances provided by the current
- * {@link ConfigurationContext}.
- *
- * @param key the property's absolute, or relative path, e.g. @code
- * a/b/c/d.myProperty}.
- * @param type The target type required, not null.
- * @param <T> the value type
- * @return the converted value, never null.
- */
- @Override
- public <T> T get(String key, TypeLiteral<T> type) {
- return convertValue(key, get(key), type);
- }
-
- protected <T> T convertValue(String key, String value, TypeLiteral<T> type) {
- if (value != null) {
- List<PropertyConverter<T>> converters = configurationContext.getPropertyConverters(type);
- ConversionContext context = new ConversionContext.Builder(this, this.configurationContext, key, type)
- .build();
- for (PropertyConverter<T> converter : converters) {
- try {
- T t = converter.convert(value, context);
- if (t != null) {
- return t;
- }
- } catch (Exception e) {
- LOG.log(Level.FINEST, "PropertyConverter: " + converter + " failed to convert value: " + value, e);
- }
- }
- // if the target type is a String, we can return the value, no conversion required.
- if(type.equals(TypeLiteral.of(String.class))){
- return (T)value;
- }
- // unsupported type, throw an exception
- throw new ConfigException("Unparseable config value for type: " + type.getRawType().getName() + ": " + key +
- ", supported formats: " + context.getSupportedFormats());
- }
- return null;
- }
-
- @Override
- public <T> T getOrDefault(String key, TypeLiteral<T> type, T defaultValue) {
- T val = get(key, type);
- if(val==null){
- return defaultValue;
- }
- return val;
- }
-
- @Override
- public Configuration with(ConfigOperator operator) {
- return operator.operate(this);
- }
-
- @Override
- public <T> T query(ConfigQuery<T> query) {
- return query.query(this);
- }
-
- @Override
- public ConfigurationContext getContext() {
- return configurationContext;
- }
-
- @Override
- public String toString() {
- return "Configuration{\n " +
- configurationContext +
- '}';
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/2d0ef4b9/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/DefaultConfigurationBuilder.java
----------------------------------------------------------------------
diff --git a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/DefaultConfigurationBuilder.java b/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/DefaultConfigurationBuilder.java
deleted file mode 100644
index b26d0af..0000000
--- a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/DefaultConfigurationBuilder.java
+++ /dev/null
@@ -1,229 +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.spisupport;
-
-import org.apache.tamaya.Configuration;
-import org.apache.tamaya.TypeLiteral;
-import org.apache.tamaya.spi.*;
-
-import java.util.*;
-
-/**
- * Default implementation of {@link ConfigurationContextBuilder}.
- */
-public class DefaultConfigurationBuilder implements ConfigurationBuilder {
-
- private final ConfigurationContextBuilder contextBuilder;
-
- /**
- * Creates a new builder instance.
- */
- public DefaultConfigurationBuilder() {
- this.contextBuilder = new DefaultConfigurationContextBuilder();
- }
-
- /**
- * Creates a new builder instance initializing it with the given context.
- * @param configuration the configuration to be used, not null.
- */
- public DefaultConfigurationBuilder(Configuration configuration) {
- this.contextBuilder = new DefaultConfigurationContextBuilder(configuration.getContext());
- }
-
- /**
- * Allows to set configuration context during unit tests.
- */
- ConfigurationBuilder setConfiguration(Configuration configuration) {
- this.contextBuilder.setContext(configuration.getContext());
- return this;
- }
-
-
- @Override
- public ConfigurationBuilder setContext(ConfigurationContext context) {
- this.contextBuilder.setContext(context);
- return this;
- }
-
- @Override
- public ConfigurationBuilder addPropertySources(PropertySource... sources){
- this.contextBuilder.addPropertySources(sources);
- return this;
- }
-
- @Override
- public ConfigurationBuilder addPropertySources(Collection<PropertySource> sources){
- this.contextBuilder.addPropertySources(sources);
- return this;
- }
-
- public ConfigurationBuilder addDefaultPropertyFilters() {
- this.contextBuilder.addDefaultPropertyFilters();
- return this;
- }
-
- public ConfigurationBuilder addDefaultPropertySources() {
- this.contextBuilder.addDefaultPropertySources();
- return this;
- }
-
- public ConfigurationBuilder addDefaultPropertyConverters() {
- this.contextBuilder.addDefaultPropertyConverters();
- return this;
- }
-
- @Override
- public ConfigurationBuilder removePropertySources(PropertySource... propertySources) {
- this.contextBuilder.removePropertySources(propertySources);
- return this;
- }
-
- @Override
- public ConfigurationBuilder removePropertySources(Collection<PropertySource> propertySources) {
- this.contextBuilder.removePropertySources(propertySources);
- return this;
- }
-
- @Override
- public List<PropertySource> getPropertySources() {
- return this.contextBuilder.getPropertySources();
- }
-
- @Override
- public ConfigurationBuilder increasePriority(PropertySource propertySource) {
- this.contextBuilder.increasePriority(propertySource);
- return this;
- }
-
- @Override
- public ConfigurationBuilder decreasePriority(PropertySource propertySource) {
- this.contextBuilder.decreasePriority(propertySource);
- return this;
- }
-
- @Override
- public ConfigurationBuilder highestPriority(PropertySource propertySource) {
- this.contextBuilder.highestPriority(propertySource);
- return this;
- }
-
- @Override
- public ConfigurationBuilder lowestPriority(PropertySource propertySource) {
- this.contextBuilder.lowestPriority(propertySource);
- return this;
- }
-
- @Override
- public ConfigurationBuilder addPropertyFilters(PropertyFilter... filters){
- this.contextBuilder.addPropertyFilters(filters);
- return this;
- }
-
- @Override
- public ConfigurationBuilder addPropertyFilters(Collection<PropertyFilter> filters){
- this.contextBuilder.addPropertyFilters(filters);
- return this;
- }
-
- @Override
- public ConfigurationBuilder removePropertyFilters(PropertyFilter... filters) {
- this.contextBuilder.removePropertyFilters(filters);
- return this;
- }
-
- @Override
- public ConfigurationBuilder removePropertyFilters(Collection<PropertyFilter> filters) {
- this.contextBuilder.removePropertyFilters(filters);
- return this;
- }
-
-
- @Override
- public <T> ConfigurationBuilder removePropertyConverters(TypeLiteral<T> typeToConvert,
- PropertyConverter<T>... converters) {
- this.contextBuilder.removePropertyConverters(typeToConvert, converters);
- return this;
- }
-
- @Override
- public <T> ConfigurationBuilder removePropertyConverters(TypeLiteral<T> typeToConvert,
- Collection<PropertyConverter<T>> converters) {
- this.contextBuilder.removePropertyConverters(typeToConvert, converters);
- return this;
- }
-
- @Override
- public ConfigurationBuilder removePropertyConverters(TypeLiteral<?> typeToConvert) {
- this.contextBuilder.removePropertyConverters(typeToConvert);
- return this;
- }
-
-
- @Override
- public ConfigurationBuilder setPropertyValueCombinationPolicy(PropertyValueCombinationPolicy combinationPolicy){
- this.contextBuilder.setPropertyValueCombinationPolicy(combinationPolicy);
- return this;
- }
-
-
- @Override
- public <T> ConfigurationBuilder addPropertyConverters(TypeLiteral<T> type, PropertyConverter<T>... propertyConverters){
- this.contextBuilder.addPropertyConverters(type, propertyConverters);
- return this;
- }
-
- @Override
- public <T> ConfigurationBuilder addPropertyConverters(TypeLiteral<T> type, Collection<PropertyConverter<T>> propertyConverters){
- this.contextBuilder.addPropertyConverters(type, propertyConverters);
- return this;
- }
-
- /**
- * 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}.
- */
- @Override
- public Configuration build() {
- return new DefaultConfiguration(this.contextBuilder.build());
- }
-
- @Override
- public ConfigurationBuilder sortPropertyFilter(Comparator<PropertyFilter> comparator) {
- this.contextBuilder.sortPropertyFilter(comparator);
- return this;
- }
-
- @Override
- public ConfigurationBuilder sortPropertySources(Comparator<PropertySource> comparator) {
- this.contextBuilder.sortPropertySources(comparator);
- return this;
- }
-
- @Override
- public List<PropertyFilter> getPropertyFilters() {
- return this.contextBuilder.getPropertyFilters();
- }
-
- @Override
- public Map<TypeLiteral<?>, Collection<PropertyConverter<?>>> getPropertyConverter() {
- return this.contextBuilder.getPropertyConverter();
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/2d0ef4b9/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/DefaultConfigurationContext.java
----------------------------------------------------------------------
diff --git a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/DefaultConfigurationContext.java b/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/DefaultConfigurationContext.java
deleted file mode 100644
index f5c97d6..0000000
--- a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/DefaultConfigurationContext.java
+++ /dev/null
@@ -1,300 +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.spisupport;
-
-import org.apache.tamaya.TypeLiteral;
-import org.apache.tamaya.spi.ConfigurationContext;
-import org.apache.tamaya.spi.ConfigurationContextBuilder;
-import org.apache.tamaya.spi.PropertyConverter;
-import org.apache.tamaya.spi.PropertyFilter;
-import org.apache.tamaya.spi.PropertySource;
-import org.apache.tamaya.spi.PropertyValue;
-import org.apache.tamaya.spi.PropertyValueCombinationPolicy;
-import org.apache.tamaya.spi.ServiceContextManager;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-import java.util.logging.Logger;
-
-/**
- * Default Implementation of a simple ConfigurationContext.
- */
-public class DefaultConfigurationContext implements ConfigurationContext {
- /** The logger used. */
- private final static Logger LOG = Logger.getLogger(DefaultConfigurationContext.class.getName());
- /**
- * Cubcomponent handling {@link PropertyConverter} instances.
- */
- private final PropertyConverterManager propertyConverterManager = new PropertyConverterManager();
-
- /**
- * The current unmodifiable list of loaded {@link PropertySource} instances.
- */
- private List<PropertySource> immutablePropertySources;
-
- /**
- * The current unmodifiable list of loaded {@link PropertyFilter} instances.
- */
- private List<PropertyFilter> immutablePropertyFilters;
-
- /**
- * The overriding policy used when combining PropertySources registered to evalute the final configuration
- * values.
- */
- private PropertyValueCombinationPolicy propertyValueCombinationPolicy;
-
- /**
- * Lock for internal synchronization.
- */
- private final ReentrantReadWriteLock propertySourceLock = new ReentrantReadWriteLock();
- /**
- * Lock for internal synchronization.
- */
- private final ReentrantReadWriteLock propertyFilterLock = new ReentrantReadWriteLock();
-
- /**
- * Creates an empty Configuration context.
- */
- protected DefaultConfigurationContext() {
- this(new DefaultConfigurationContextBuilder());
- }
-
- DefaultConfigurationContext(DefaultConfigurationContextBuilder builder) {
- List<PropertySource> propertySources = new ArrayList<>();
- // first we load all PropertySources which got registered via java.util.ServiceLoader
- propertySources.addAll(builder.propertySources);
- // now sort them according to their ordinal values
- immutablePropertySources = Collections.unmodifiableList(propertySources);
- LOG.info("Registered " + immutablePropertySources.size() + " property sources: " +
- immutablePropertySources);
-
- // as next step we pick up the PropertyFilters pretty much the same way
- List<PropertyFilter> propertyFilters = new ArrayList<>(builder.getPropertyFilters());
- immutablePropertyFilters = Collections.unmodifiableList(propertyFilters);
- LOG.info("Registered " + immutablePropertyFilters.size() + " property filters: " +
- immutablePropertyFilters);
-
- // Finally add the converters
- for(Map.Entry<TypeLiteral<?>, Collection<PropertyConverter<?>>> en:builder.getPropertyConverter().entrySet()) {
- for (PropertyConverter converter : en.getValue()) {
- this.propertyConverterManager.register(en.getKey(), converter);
- }
- }
- LOG.info("Registered " + propertyConverterManager.getPropertyConverters().size() + " property converters: " +
- propertyConverterManager.getPropertyConverters());
-
- propertyValueCombinationPolicy = builder.combinationPolicy;
- if(propertyValueCombinationPolicy==null){
- propertyValueCombinationPolicy = ServiceContextManager.getServiceContext().getService(PropertyValueCombinationPolicy.class);
- }
- if(propertyValueCombinationPolicy==null){
- propertyValueCombinationPolicy = PropertyValueCombinationPolicy.DEFAULT_OVERRIDING_COLLECTOR;
- }
- LOG.info("Using PropertyValueCombinationPolicy: " + propertyValueCombinationPolicy);
- }
-
-
- @Deprecated
- @Override
- public void addPropertySources(PropertySource... propertySourcesToAdd) {
- Lock writeLock = propertySourceLock.writeLock();
- try {
- writeLock.lock();
- List<PropertySource> newPropertySources = new ArrayList<>(this.immutablePropertySources);
- newPropertySources.addAll(Arrays.asList(propertySourcesToAdd));
- Collections.sort(newPropertySources, PropertySourceComparator.getInstance());
-
- this.immutablePropertySources = Collections.unmodifiableList(newPropertySources);
- } finally {
- writeLock.unlock();
- }
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (!(o instanceof DefaultConfigurationContext)){
- return false;
- }
-
- DefaultConfigurationContext that = (DefaultConfigurationContext) o;
-
- if (!propertyConverterManager.equals(that.propertyConverterManager)) {
- return false;
- }
- if (!immutablePropertySources.equals(that.immutablePropertySources)) {
- return false;
- }
- if (!immutablePropertyFilters.equals(that.immutablePropertyFilters)) {
- return false;
- }
- return getPropertyValueCombinationPolicy().equals(that.getPropertyValueCombinationPolicy());
-
- }
-
- @Override
- public int hashCode() {
- int result = propertyConverterManager.hashCode();
- result = 31 * result + immutablePropertySources.hashCode();
- result = 31 * result + immutablePropertyFilters.hashCode();
- result = 31 * result + getPropertyValueCombinationPolicy().hashCode();
- return result;
- }
-
- @Override
- public String toString() {
- StringBuilder b = new StringBuilder("ConfigurationContext{\n");
- b.append(" Property Sources\n");
- b.append(" ----------------\n");
- if(immutablePropertySources.isEmpty()){
- b.append(" No property sources loaded.\n\n");
- }else {
- b.append(" CLASS NAME ORDINAL SCANNABLE SIZE STATE ERROR\n\n");
- for (PropertySource ps : immutablePropertySources) {
- b.append(" ");
- appendFormatted(b, ps.getClass().getSimpleName(), 30);
- appendFormatted(b, ps.getName(), 70);
- appendFormatted(b, String.valueOf(PropertySourceComparator.getOrdinal(ps)), 8);
- appendFormatted(b, String.valueOf(ps.isScannable()), 10);
- if (ps.isScannable()) {
- appendFormatted(b, String.valueOf(ps.getProperties().size()), 8);
- } else {
- appendFormatted(b, "-", 8);
- }
- PropertyValue state = ps.get("_state");
- if(state==null){
- appendFormatted(b, "OK", 10);
- }else {
- appendFormatted(b, state.getValue(), 10);
- if("ERROR".equals(state.getValue())){
- PropertyValue val = ps.get("_exception");
- if(val!=null) {
- appendFormatted(b, val.getValue(), 30);
- }
- }
- }
- b.append('\n');
- }
- b.append("\n");
- }
- b.append(" Property Filters\n");
- b.append(" ----------------\n");
- if(immutablePropertyFilters.isEmpty()){
- b.append(" No property filters loaded.\n\n");
- }else {
- b.append(" CLASS INFO\n\n");
- for (PropertyFilter filter : getPropertyFilters()) {
- b.append(" ");
- appendFormatted(b, filter.getClass().getSimpleName(), 30);
- b.append(removeNewLines(filter.toString()));
- b.append('\n');
- }
- b.append("\n\n");
- }
- b.append(" Property Converters\n");
- b.append(" -------------------\n");
- b.append(" CLASS TYPE INFO\n\n");
- for(Map.Entry<TypeLiteral<?>, List<PropertyConverter<?>>> converterEntry:getPropertyConverters().entrySet()){
- for(PropertyConverter converter: converterEntry.getValue()){
- b.append(" ");
- appendFormatted(b, converter.getClass().getSimpleName(), 30);
- appendFormatted(b, converterEntry.getKey().getRawType().getSimpleName(), 30);
- b.append(removeNewLines(converter.toString()));
- b.append('\n');
- }
- }
- b.append("\n\n");
- b.append(" PropertyValueCombinationPolicy: " + getPropertyValueCombinationPolicy().getClass().getName()).append('\n');
- b.append('}');
- return b.toString();
- }
-
- private void appendFormatted(StringBuilder b, String text, int length) {
- int padding;
- if(text.length() <= (length)){
- b.append(text);
- padding = length - text.length();
- }else{
- b.append(text.substring(0, length-1));
- padding = 1;
- }
- for(int i=0;i<padding;i++){
- b.append(' ');
- }
- }
-
- private String removeNewLines(String s) {
- return s.replace('\n', ' ').replace('\r', ' ');
- }
-
- @Override
- public List<PropertySource> getPropertySources() {
- return immutablePropertySources;
- }
-
- @Override
- public PropertySource getPropertySource(String name) {
- for(PropertySource ps:getPropertySources()){
- if(name.equals(ps.getName())){
- return ps;
- }
- }
- return null;
- }
-
- @Override
- 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() {
- return new DefaultConfigurationContextBuilder(this);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/2d0ef4b9/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/DefaultConfigurationContextBuilder.java
----------------------------------------------------------------------
diff --git a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/DefaultConfigurationContextBuilder.java b/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/DefaultConfigurationContextBuilder.java
deleted file mode 100644
index 023faf3..0000000
--- a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/DefaultConfigurationContextBuilder.java
+++ /dev/null
@@ -1,408 +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.spisupport;
-
-import org.apache.tamaya.TypeLiteral;
-import org.apache.tamaya.spi.ConfigurationContext;
-import org.apache.tamaya.spi.ConfigurationContextBuilder;
-import org.apache.tamaya.spi.PropertyConverter;
-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 java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.logging.Logger;
-
-/**
- * Default implementation of {@link ConfigurationContextBuilder}.
- */
-public class DefaultConfigurationContextBuilder implements ConfigurationContextBuilder {
-
- private static final Logger LOG = Logger.getLogger(DefaultConfigurationContextBuilder.class.getName());
-
- List<PropertyFilter> propertyFilters = new ArrayList<>();
- List<PropertySource> propertySources = new ArrayList<>();
- PropertyValueCombinationPolicy combinationPolicy =
- PropertyValueCombinationPolicy.DEFAULT_OVERRIDING_COLLECTOR;
- Map<TypeLiteral<?>, Collection<PropertyConverter<?>>> propertyConverters = new HashMap<>();
-
- /**
- * Flag if the config has already been built.
- * Configuration can be built only once
- */
- private boolean built;
-
-
-
- /**
- * Creates a new builder instance.
- */
- public DefaultConfigurationContextBuilder() {
- }
-
- /**
- * Creates a new builder instance initializing it with the given context.
- * @param context the context to be used, not null.
- */
- public DefaultConfigurationContextBuilder(ConfigurationContext context) {
- this.propertyConverters.putAll(context.getPropertyConverters());
- this.propertyFilters.addAll(context.getPropertyFilters());
- for(PropertySource ps:context.getPropertySources()) {
- addPropertySources(ps);
- }
- this.combinationPolicy = context.getPropertyValueCombinationPolicy();
- }
-
- /**
- * Allows to set configuration context during unit tests.
- */
- ConfigurationContextBuilder setConfigurationContext(ConfigurationContext configurationContext) {
- checkBuilderState();
- //noinspection deprecation
- this.propertyFilters.clear();
- this.propertyFilters.addAll(configurationContext.getPropertyFilters());
- this.propertySources.clear();
- for(PropertySource ps:configurationContext.getPropertySources()) {
- addPropertySources(ps);
- }
- this.propertyConverters.clear();
- this.propertyConverters.putAll(configurationContext.getPropertyConverters());
- this.combinationPolicy = configurationContext.getPropertyValueCombinationPolicy();
- return this;
- }
-
-
- @Override
- public ConfigurationContextBuilder setContext(ConfigurationContext context) {
- checkBuilderState();
- this.propertyConverters.putAll(context.getPropertyConverters());
- for(PropertySource ps:context.getPropertySources()){
- this.propertySources.add(ps);
- }
- this.propertyFilters.addAll(context.getPropertyFilters());
- this.combinationPolicy = context.getPropertyValueCombinationPolicy();
- return this;
- }
-
- @Override
- public ConfigurationContextBuilder addPropertySources(PropertySource... sources){
- return addPropertySources(Arrays.asList(sources));
- }
-
- @Override
- public ConfigurationContextBuilder addPropertySources(Collection<PropertySource> sources){
- checkBuilderState();
- for(PropertySource source:sources) {
- if (!this.propertySources.contains(source)) {
- this.propertySources.add(source);
- }
- }
- return this;
- }
-
- public DefaultConfigurationContextBuilder addDefaultPropertyFilters() {
- checkBuilderState();
- for(PropertyFilter pf:ServiceContextManager.getServiceContext().getServices(PropertyFilter.class)){
- addPropertyFilters(pf);
- }
- return this;
- }
-
- public DefaultConfigurationContextBuilder addDefaultPropertySources() {
- checkBuilderState();
- for(PropertySource ps:ServiceContextManager.getServiceContext().getServices(PropertySource.class)){
- addPropertySources(ps);
- }
- for(PropertySourceProvider pv:ServiceContextManager.getServiceContext().getServices(PropertySourceProvider.class)){
- for(PropertySource ps:pv.getPropertySources()){
- addPropertySources(ps);
- }
- }
- return this;
- }
-
- public DefaultConfigurationContextBuilder addDefaultPropertyConverters() {
- checkBuilderState();
- for(Map.Entry<TypeLiteral, Collection<PropertyConverter>> en:getDefaultPropertyConverters().entrySet()){
- for(PropertyConverter pc: en.getValue()) {
- addPropertyConverters(en.getKey(), pc);
- }
- }
- return this;
- }
-
- @Override
- public ConfigurationContextBuilder removePropertySources(PropertySource... propertySources) {
- return removePropertySources(Arrays.asList(propertySources));
- }
-
- @Override
- public ConfigurationContextBuilder removePropertySources(Collection<PropertySource> propertySources) {
- checkBuilderState();
- this.propertySources.removeAll(propertySources);
- return this;
- }
-
- private PropertySource getPropertySource(String name) {
- for(PropertySource ps:propertySources){
- if(ps.getName().equals(name)){
- return ps;
- }
- }
- throw new IllegalArgumentException("No such PropertySource: "+name);
- }
-
- @Override
- public List<PropertySource> getPropertySources() {
- return this.propertySources;
- }
-
- @Override
- public ConfigurationContextBuilder increasePriority(PropertySource propertySource) {
- checkBuilderState();
- int index = propertySources.indexOf(propertySource);
- if(index<0){
- throw new IllegalArgumentException("No such PropertySource: " + propertySource);
- }
- if(index<(propertySources.size()-1)){
- propertySources.remove(propertySource);
- propertySources.add(index+1, propertySource);
- }
- return this;
- }
-
- @Override
- public ConfigurationContextBuilder decreasePriority(PropertySource propertySource) {
- checkBuilderState();
- int index = propertySources.indexOf(propertySource);
- if(index<0){
- throw new IllegalArgumentException("No such PropertySource: " + propertySource);
- }
- if(index>0){
- propertySources.remove(propertySource);
- propertySources.add(index-1, propertySource);
- }
- return this;
- }
-
- @Override
- public ConfigurationContextBuilder highestPriority(PropertySource propertySource) {
- checkBuilderState();
- int index = propertySources.indexOf(propertySource);
- if(index<0){
- throw new IllegalArgumentException("No such PropertySource: " + propertySource);
- }
- if(index<(propertySources.size()-1)){
- propertySources.remove(propertySource);
- propertySources.add(propertySource);
- }
- return this;
- }
-
- @Override
- public ConfigurationContextBuilder lowestPriority(PropertySource propertySource) {
- checkBuilderState();
- int index = propertySources.indexOf(propertySource);
- if(index<0){
- throw new IllegalArgumentException("No such PropertySource: " + propertySource);
- }
- if(index>0){
- propertySources.remove(propertySource);
- propertySources.add(0, propertySource);
- }
- return this;
- }
-
- @Override
- public ConfigurationContextBuilder addPropertyFilters(PropertyFilter... filters){
- return addPropertyFilters(Arrays.asList(filters));
- }
-
- @Override
- public ConfigurationContextBuilder addPropertyFilters(Collection<PropertyFilter> filters){
- checkBuilderState();
- for(PropertyFilter f:filters) {
- if (!this.propertyFilters.contains(f)) {
- this.propertyFilters.add(f);
- }
- }
- return this;
- }
-
- @Override
- public ConfigurationContextBuilder removePropertyFilters(PropertyFilter... filters) {
- return removePropertyFilters(Arrays.asList(filters));
- }
-
- @Override
- public ConfigurationContextBuilder removePropertyFilters(Collection<PropertyFilter> filters) {
- checkBuilderState();
- this.propertyFilters.removeAll(filters);
- return this;
- }
-
-
- @Override
- public <T> ConfigurationContextBuilder removePropertyConverters(TypeLiteral<T> typeToConvert,
- PropertyConverter<T>... converters) {
- return removePropertyConverters(typeToConvert, Arrays.asList(converters));
- }
-
- @Override
- public <T> ConfigurationContextBuilder removePropertyConverters(TypeLiteral<T> typeToConvert,
- Collection<PropertyConverter<T>> converters) {
- Collection<PropertyConverter<?>> subConverters = this.propertyConverters.get(typeToConvert);
- if(subConverters!=null) {
- subConverters.removeAll(converters);
- }
- return this;
- }
-
- @Override
- public ConfigurationContextBuilder removePropertyConverters(TypeLiteral<?> typeToConvert) {
- this.propertyConverters.remove(typeToConvert);
- return this;
- }
-
-
- @Override
- public ConfigurationContextBuilder setPropertyValueCombinationPolicy(PropertyValueCombinationPolicy combinationPolicy){
- checkBuilderState();
- this.combinationPolicy = Objects.requireNonNull(combinationPolicy);
- return this;
- }
-
-
- @Override
- public <T> ConfigurationContextBuilder addPropertyConverters(TypeLiteral<T> type, PropertyConverter<T>... propertyConverters){
- checkBuilderState();
- Objects.requireNonNull(type);
- Objects.requireNonNull(propertyConverters);
- Collection<PropertyConverter<?>> converters = this.propertyConverters.get(type);
- if(converters==null){
- converters = new ArrayList<>();
- this.propertyConverters.put(type, converters);
- }
- for(PropertyConverter<T> propertyConverter:propertyConverters) {
- if (!converters.contains(propertyConverter)) {
- converters.add(propertyConverter);
- } else {
- LOG.warning("Converter ignored, already registered: " + propertyConverter);
- }
- }
- return this;
- }
-
- @Override
- public <T> ConfigurationContextBuilder addPropertyConverters(TypeLiteral<T> type, Collection<PropertyConverter<T>> propertyConverters){
- checkBuilderState();
- Objects.requireNonNull(type);
- Objects.requireNonNull(propertyConverters);
- Collection<PropertyConverter<?>> converters = this.propertyConverters.get(type);
- if(converters==null){
- converters = new ArrayList<>();
- this.propertyConverters.put(type, converters);
- }
- for(PropertyConverter<T> propertyConverter:propertyConverters) {
- if (!converters.contains(propertyConverter)) {
- converters.add(propertyConverter);
- } else {
- LOG.warning("Converter ignored, already registered: " + propertyConverter);
- }
- }
- return this;
- }
-
- protected ConfigurationContextBuilder loadDefaults() {
- checkBuilderState();
- this.combinationPolicy = PropertyValueCombinationPolicy.DEFAULT_OVERRIDING_COLLECTOR;
- addDefaultPropertySources();
- addDefaultPropertyFilters();
- addDefaultPropertyConverters();
- return this;
- }
-
-
- private Map<TypeLiteral, Collection<PropertyConverter>> getDefaultPropertyConverters() {
- Map<TypeLiteral, Collection<PropertyConverter>> result = new HashMap<>();
- for (PropertyConverter conv : ServiceContextManager.getServiceContext().getServices(
- PropertyConverter.class)) {
- TypeLiteral target = TypeLiteral.of(TypeLiteral.of(conv.getClass()).getType());
- Collection<PropertyConverter> convList = result.get(target);
- if (convList == null) {
- convList = new ArrayList<>();
- result.put(target, convList);
- }
- convList.add(conv);
- }
- return result;
- }
-
-
- /**
- * 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}.
- */
- @Override
- public ConfigurationContext build() {
- checkBuilderState();
- built = true;
- return new DefaultConfigurationContext(this);
- }
-
- @Override
- public ConfigurationContextBuilder sortPropertyFilter(Comparator<PropertyFilter> comparator) {
- Collections.sort(propertyFilters, comparator);
- return this;
- }
-
- @Override
- public ConfigurationContextBuilder sortPropertySources(Comparator<PropertySource> comparator) {
- Collections.sort(propertySources, comparator);
- return this;
- }
-
- private void checkBuilderState() {
- if (built) {
- throw new IllegalStateException("Configuration has already been build.");
- }
- }
-
- @Override
- public List<PropertyFilter> getPropertyFilters() {
- return propertyFilters;
- }
-
- @Override
- public Map<TypeLiteral<?>, Collection<PropertyConverter<?>>> getPropertyConverter() {
- return Collections.unmodifiableMap(this.propertyConverters);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/2d0ef4b9/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/EnumConverter.java
----------------------------------------------------------------------
diff --git a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/EnumConverter.java b/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/EnumConverter.java
deleted file mode 100644
index d003ccb..0000000
--- a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/EnumConverter.java
+++ /dev/null
@@ -1,68 +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.spisupport;
-
-import org.apache.tamaya.ConfigException;
-import org.apache.tamaya.spi.ConversionContext;
-import org.apache.tamaya.spi.PropertyConverter;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Locale;
-import java.util.Objects;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-/**
- * Converter, converting from String to tge given enum type.
- * @param <T> the enum type.
- */
-public class EnumConverter<T> implements PropertyConverter<T> {
- private final Logger LOG = Logger.getLogger(EnumConverter.class.getName());
- private Class<T> enumType;
- private Method factory;
-
- public EnumConverter(Class<T> enumType) {
- if (!Enum.class.isAssignableFrom(enumType)) {
- throw new IllegalArgumentException("Not an Enum: " + enumType.getName());
- }
- this.enumType = Objects.requireNonNull(enumType);
- try {
- this.factory = enumType.getMethod("valueOf", String.class);
- } catch (NoSuchMethodException e) {
- throw new ConfigException("Uncovertible enum type without valueOf method found, please provide a custom " +
- "PropertyConverter for: " + enumType.getName());
- }
- }
-
- @Override
- public T convert(String value, ConversionContext context) {
- try {
- return (T) factory.invoke(null, value);
- } catch (InvocationTargetException | IllegalAccessException e) {
- LOG.log(Level.FINEST, "Invalid enum value '" + value + "' for " + enumType.getName(), e);
- }
- try {
- return (T) factory.invoke(null, value.toUpperCase(Locale.ENGLISH));
- } catch (InvocationTargetException | IllegalAccessException e) {
- LOG.log(Level.FINEST, "Invalid enum value '" + value + "' for " + enumType.getName(), e);
- }
- return null;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/2d0ef4b9/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/EnvironmentPropertySource.java
----------------------------------------------------------------------
diff --git a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/EnvironmentPropertySource.java b/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/EnvironmentPropertySource.java
deleted file mode 100644
index 200c567..0000000
--- a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/EnvironmentPropertySource.java
+++ /dev/null
@@ -1,182 +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.spisupport;
-
-import org.apache.tamaya.spi.PropertyValue;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.logging.Logger;
-
-/**
- * This {@link org.apache.tamaya.spi.PropertySource} provides all Properties which are set
- * via
- * {@code export myprop=myval} on UNIX Systems or
- * {@code set myprop=myval} on Windows. You can disable this feature by setting {@code tamaya.envprops.disable}
- * or {@code tamaya.defaults.disable}.
- */
-public class EnvironmentPropertySource extends BasePropertySource {
-
- private static final Logger LOG = Logger.getLogger(EnvironmentPropertySource.class.getName());
-
- /**
- * Default ordinal used.
- */
- public static final int DEFAULT_ORDINAL = 300;
-
- /**
- * Prefix that allows environment properties to virtually be mapped on specified sub section.
- */
- private String prefix;
-
- /**
- * If true, this property source does not return any properties. This is useful since this
- * property source is applied by default, but can be switched off by setting the
- * {@code tamaya.envprops.disable} system/environment property to {@code true}.
- */
- private boolean disabled = false;
-
-
- /**
- * Creates a new instance. Also initializes the {@code prefix} and {@code disabled} properties
- * from the system-/ environment properties:
- * <pre>
- * tamaya.envprops.prefix
- * tamaya.envprops.disable
- * </pre>
- */
- public EnvironmentPropertySource(){
- initFromSystemProperties();
- }
-
- /**
- * Initializes the {@code prefix} and {@code disabled} properties from the system-/
- * environment properties:
- * <pre>
- * tamaya.envprops.prefix
- * tamaya.envprops.disable
- * </pre>
- */
- private void initFromSystemProperties() {
- String value = System.getProperty("tamaya.envprops.prefix");
- if(value==null){
- prefix = System.getenv("tamaya.envprops.prefix");
- }
- value = System.getProperty("tamaya.envprops.disable");
- if(value==null){
- value = System.getenv("tamaya.envprops.disable");
- }
- if(value==null){
- value = System.getProperty("tamaya.defaults.disable");
- }
- if(value==null){
- value = System.getenv("tamaya.defaults.disable");
- }
- if(value!=null && !value.isEmpty()) {
- this.disabled = Boolean.parseBoolean(value);
- }
- }
-
- /**
- * Creates a new instance using a fixed ordinal value.
- * @param ordinal the ordinal number.
- */
- public EnvironmentPropertySource(int ordinal){
- this(null, ordinal);
- }
-
- /**
- * Creates a new instance.
- * @param prefix the prefix to be used, or null.
- * @param ordinal the ordinal to be used.
- */
- public EnvironmentPropertySource(String prefix, int ordinal){
- super("environment-properties");
- this.prefix = prefix;
- setOrdinal(ordinal);
- }
-
- /**
- * Creates a new instance.
- * @param prefix the prefix to be used, or null.
- */
- public EnvironmentPropertySource(String prefix){
- this.prefix = prefix;
- }
-
- @Override
- public int getDefaultOrdinal() {
- return DEFAULT_ORDINAL;
- }
-
- @Override
- public String getName() {
- if(disabled){
- return super.getName() + "(disabled)";
- }
- return super.getName();
- }
-
- @Override
- public PropertyValue get(String key) {
- if(disabled){
- return null;
- }
- String prefix = this.prefix;
- if(prefix==null) {
- return PropertyValue.of(key, System.getenv(key), getName());
- }
- return PropertyValue.of(key, System.getenv(key.substring(prefix.length())), getName());
- }
-
- @Override
- public Map<String, PropertyValue> getProperties() {
- if(disabled){
- return Collections.emptyMap();
- }
- String prefix = this.prefix;
- if(prefix==null) {
- Map<String, PropertyValue> entries = new HashMap<>(System.getenv().size());
- for (Map.Entry<String, String> entry : System.getenv().entrySet()) {
- entries.put(entry.getKey(), PropertyValue.of(entry.getKey(), entry.getValue(), getName()));
- }
- return entries;
- }else{
- Map<String, PropertyValue> entries = new HashMap<>(System.getenv().size());
- for (Map.Entry<String, String> entry : System.getenv().entrySet()) {
- entries.put(prefix + entry.getKey(), PropertyValue.of(prefix + entry.getKey(), entry.getValue(), getName()));
- }
- return entries;
- }
- }
-
- @Override
- public boolean isScannable() {
- return true;
- }
-
- @Override
- protected String toStringValues() {
- return super.toStringValues() +
- " prefix=" + prefix + '\n' +
- " disabled=" + disabled + '\n';
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/2d0ef4b9/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/MapPropertySource.java
----------------------------------------------------------------------
diff --git a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/MapPropertySource.java b/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/MapPropertySource.java
deleted file mode 100644
index b07231e..0000000
--- a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/MapPropertySource.java
+++ /dev/null
@@ -1,102 +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.spisupport;
-
-import org.apache.tamaya.spi.PropertyValue;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
-/**
- * Simple PropertySource implementation that just takes a Map and an (optional) priority.
- * Optionally the entries passed can be mapped to a different rootContext.
- */
-public class MapPropertySource extends BasePropertySource {
-
- /**
- * The current properties.
- */
- private final Map<String, PropertyValue> props = new HashMap<>();
-
- /**
- * Creates a new instance, hereby using the default mechanism for evaluating the property source's
- * priority.
- *
- * @param name unique name of this source.
- * @param props the properties
- */
- public MapPropertySource(String name, Map<String, String> props) {
- this(name, props, null);
- }
-
- /**
- * Creates a new instance, hereby using the default mechanism for evaluating the property source's
- * priority, but applying a custom mapping {@code prefix} to the entries provided.
- *
- * @param name unique name of this source.
- * @param props the properties
- * @param prefix the prefix context mapping, or null (for no mapping).
- */
- public MapPropertySource(String name, Map<String, String> props, String prefix) {
- super(name);
- if (prefix == null) {
- for (Map.Entry<String, String> en : props.entrySet()) {
- this.props.put(en.getKey(),
- PropertyValue.of(en.getKey(), en.getValue(), name));
- }
- } else {
- for (Map.Entry<String, String> en : props.entrySet()) {
- this.props.put(prefix + en.getKey(),
- PropertyValue.of(prefix + en.getKey(), en.getValue(), name));
- }
- }
- }
-
- /**
- * Creates a new instance, hereby using the default mechanism for evaluating the property source's
- * priority, but applying a custom mapping {@code rootContext} to the entries provided.
- *
- * @param name unique name of this source.
- * @param props the properties
- * @param prefix the prefix context mapping, or null (for no mapping).
- */
- public MapPropertySource(String name, Properties props, String prefix) {
- this(name, getMap(props), prefix);
- }
-
- /**
- * Simple method to convert Properties into a Map instance.
- * @param props the properties, not null.
- * @return the corresponding Map instance.
- */
- public static Map<String, String> getMap(Properties props) {
- Map<String, String> result = new HashMap<>();
- for (Map.Entry en : props.entrySet()) {
- result.put(en.getKey().toString(), en.getValue().toString());
- }
- return result;
- }
-
-
- @Override
- public Map<String, PropertyValue> getProperties() {
- return Collections.unmodifiableMap(this.props);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/2d0ef4b9/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PriorityServiceComparator.java
----------------------------------------------------------------------
diff --git a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PriorityServiceComparator.java b/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PriorityServiceComparator.java
deleted file mode 100644
index 90a8387..0000000
--- a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PriorityServiceComparator.java
+++ /dev/null
@@ -1,71 +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.spisupport;
-
-import javax.annotation.Priority;
-import java.io.Serializable;
-import java.util.Comparator;
-
-/**
- * Comparator implementation for odering services loaded based on their increasing priority values.
- */
-public class PriorityServiceComparator implements Comparator<Object>, Serializable {
-
- private static final long serialVersionUID = 1L;
-
- private static final PriorityServiceComparator INSTANCE = new PriorityServiceComparator();
-
- private PriorityServiceComparator(){}
-
- /**
- * Get the shared instance of the comparator.
- * @return the shared instance, never null.
- */
- public static PriorityServiceComparator getInstance(){
- return INSTANCE;
- }
-
- @Override
- public int compare(Object o1, Object o2) {
- int prio = getPriority(o1) - getPriority(o2);
- if (prio < 0) {
- return 1;
- } else if (prio > 0) {
- return -1;
- } else {
- return o1.getClass().getSimpleName().compareTo(o2.getClass().getSimpleName());
- }
- }
-
- /**
- * Checks the given instance for a @Priority annotation. If present the annotation's value s evaluated. If no such
- * annotation is present, a default priority is returned (1);
- *
- * @param o the instance, not null.
- * @return a priority, by default 1.
- */
- public static int getPriority(Object o) {
- int prio = 1;
- Priority priority = o.getClass().getAnnotation(Priority.class);
- if (priority != null) {
- prio = priority.value();
- }
- return prio;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/2d0ef4b9/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertiesResourcePropertySource.java
----------------------------------------------------------------------
diff --git a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertiesResourcePropertySource.java b/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertiesResourcePropertySource.java
deleted file mode 100644
index 1dc7586..0000000
--- a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/PropertiesResourcePropertySource.java
+++ /dev/null
@@ -1,109 +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.spisupport;
-
-import org.apache.tamaya.spi.ServiceContextManager;
-
-import java.io.InputStream;
-import java.net.URL;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-/**
- * Simple PropertySource, with a fixed ordinal that reads a .properties file from a given URL.
- */
-public class PropertiesResourcePropertySource extends MapPropertySource {
- /** The logger used. */
- private static final Logger LOGGER = Logger.getLogger(PropertiesResourcePropertySource.class.getName());
-
- /**
- * Creates a new instance.
- * @param url the resource URL, not null.
- */
- public PropertiesResourcePropertySource(URL url){
- this(url, null);
- }
-
- /**
- * Creates a new instance.
- * @param prefix the (optional) prefix context for mapping (prefixing) the properties loaded.
- * @param url the resource URL, not null.
- */
- public PropertiesResourcePropertySource(URL url, String prefix){
- super(url.toExternalForm(), loadProps(url), prefix);
- }
-
- /**
- * Creates a new instance.
- * @param prefix the (optional) prefix context for mapping (prefixing) the properties loaded.
- * @param path the resource path, not null.
- */
- public PropertiesResourcePropertySource(String path, String prefix){
- super(path, loadProps(path, null), prefix);
- }
-
- /**
- * Creates a new instance.
- * @param prefix the (optional) prefix context for mapping (prefixing) the properties loaded.
- * @param path the resource path, not null.
- */
- public PropertiesResourcePropertySource(String path, String prefix, ClassLoader cl){
- super(path, loadProps(path, cl), prefix);
- }
-
- /**
- * Loads the properties using the JDK's Property loading mechanism.
- * @param path the resource classpath, not null.
- * @return the loaded properties.
- */
- private static Map<String, String> loadProps(String path, ClassLoader cl) {
- if(cl==null){
- cl = PropertiesResourcePropertySource.class.getClassLoader();
- }
- URL url = ServiceContextManager.getServiceContext().getResource(path, cl);
- return loadProps(url);
- }
-
- /**
- * Loads the properties using the JDK's Property loading mechanism.
- * @param url the resource URL, not null.
- * @return the loaded properties.
- */
- private static Map<String, String> loadProps(URL url) {
- Map<String,String> result = new HashMap<>();
- if(url!=null) {
- try (InputStream is = url.openStream()) {
- Properties props = new Properties();
- props.load(is);
- for (Map.Entry en : props.entrySet()) {
- result.put(en.getKey().toString(), en.getValue().toString());
- }
- } catch (Exception e) {
- LOGGER.log(Level.WARNING, "Failed to read properties from " + url, e);
- }
- }else{
- LOGGER.log(Level.WARNING, "No properties found at " + url);
- }
- return result;
- }
-
-}