TAMAYA-274 Reduced API footprint by using Java 8 features. Added some lambdas. TAMAYA-355 Enable mapping of lists and arrays into internal datastructures. TAMAYA-353 Adding support for different classloaders.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/commit/ade6eb8b Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/tree/ade6eb8b Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/diff/ade6eb8b Branch: refs/heads/master Commit: ade6eb8ba722a3f19ecccadd739d12247d3f1aa7 Parents: ac45f10 Author: Anatole Tresch <[email protected]> Authored: Tue Oct 23 18:39:21 2018 +0200 Committer: Anatole Tresch <[email protected]> Committed: Tue Oct 23 18:39:23 2018 +0200 ---------------------------------------------------------------------- .../tamaya/ext/examples/resources/Main.java | 2 +- .../tamay/ext/examples/resolver/Main.java | 2 +- .../ext/examples/injection/MinimalTest.java | 2 +- .../apache/tamaya/ext/examples/events/Main.java | 2 +- .../tamaya/springexample/ColorConverter.java | 3 +- .../tamaya/springexample/WelcomeController.java | 11 +- .../src/main/resources/templates/welcome.ftl | 2 +- .../org/apache/tamaya/events/ConfigEvent.java | 2 +- .../tamaya/events/ConfigEventManager.java | 3 +- .../tamaya/events/ConfigurationChange.java | 10 +- .../events/ConfigurationChangeBuilder.java | 24 +- .../tamaya/events/FrozenConfiguration.java | 30 +- .../tamaya/events/PropertySourceChange.java | 8 +- .../events/PropertySourceChangeBuilder.java | 22 +- .../internal/DefaultConfigChangeObserver.java | 3 +- .../internal/DefaultConfigEventManagerSpi.java | 4 +- .../tamaya/events/ConfigurationChangeTest.java | 35 +-- .../tamaya/events/RandomPropertySource.java | 4 +- .../apache/tamaya/events/TestConfigView.java | 27 +- .../ObservingPropertySourceProvider.java | 2 +- .../DefaultConfigChangeObserverTest.java | 4 +- modules/filter/pom.xml | 6 +- .../apache/tamaya/filter/CompositeFilter.java | 119 ++++++++ .../tamaya/filter/ConfigurationFilter.java | 27 +- .../org/apache/tamaya/filter/FilterContext.java | 119 -------- .../filter/internal/DefaultMetadataFilter.java | 7 +- .../tamaya/filter/ConfigurationFilterTest.java | 31 +- .../tamaya/filter/ProgrammableFilterTest.java | 164 ++++++---- .../BaseFormatPropertySourceProvider.java | 7 +- .../apache/tamaya/format/ConfigurationData.java | 121 ++------ .../tamaya/format/ConfigurationDataBuilder.java | 198 ------------ .../tamaya/format/ConfigurationFormat.java | 35 +-- .../tamaya/format/ConfigurationFormats.java | 4 +- .../MappedConfigurationDataPropertySource.java | 81 ++--- .../format/formats/IniConfigurationFormat.java | 23 +- .../tamaya/format/formats/PropertiesFormat.java | 13 +- .../format/formats/PropertiesXmlFormat.java | 13 +- ...ppedConfigurationDataPropertySourceTest.java | 128 ++++---- .../org/apache/tamaya/json/JSONDataBuilder.java | 116 +++++++ .../java/org/apache/tamaya/json/JSONFormat.java | 8 +- .../apache/tamaya/json/JSONPropertySource.java | 10 +- .../org/apache/tamaya/json/JSONVisitor.java | 122 -------- .../org/apache/tamaya/json/JSONVisitorTest.java | 59 ++-- .../yaml/CommonJSONTestCaseCollection.java | 7 +- .../tamaya/yaml/JSONPropertySourceTest.java | 4 +- .../java/org/apache/tamaya/yaml/YAMLFormat.java | 111 +++---- .../apache/tamaya/yaml/YAMLPropertySource.java | 14 +- .../org/apache/tamaya/yaml/YAMLFormatTest.java | 2 +- .../test/resources/configs/valid/contact.yaml | 3 + .../tamaya/functions/CombinedConfiguration.java | 2 +- .../functions/ConfigurationFunctions.java | 300 +++++-------------- .../functions/EnrichedPropertySource.java | 4 +- .../tamaya/functions/MappedPropertySource.java | 6 +- .../functions/PropertySourceFunctions.java | 26 +- .../functions/ValueMappedPropertySource.java | 4 +- .../functions/CombinedConfigurationTest.java | 2 +- .../functions/ConfigurationFunctionsTest.java | 7 +- .../functions/EnrichedConfigurationTest.java | 8 +- .../functions/EnrichedPropertySourceTest.java | 2 +- .../functions/FilteredPropertySourceTest.java | 2 +- .../functions/MappedPropertySourceTest.java | 2 +- .../functions/PropertySourceFunctionsTest.java | 17 +- .../ValueMappedPropertySourceTest.java | 30 +- .../tamaya/cdi/CDIAwareServiceContext.java | 59 ++-- .../tamaya/cdi/ConfigurationProducer.java | 90 +++--- .../apache/tamaya/cdi/DefaultDynamicValue.java | 2 +- .../tamaya/cdi/ServiceLoaderServiceContext.java | 30 +- .../apache/tamaya/cdi/TamayaCDIAccessor.java | 2 +- .../tamaya/cdi/TamayaCDIInjectionExtension.java | 7 +- .../cdi/extra/ConfiguredVetoExtension.java | 4 +- .../org/apache/tamaya/cdi/ConfiguredTest.java | 8 - .../tamaya/cdi/ConfiguredVetoExtensionTest.java | 122 ++++++++ .../tamaya/cdi/cfg/TestPropertySource.java | 2 +- .../cdi/extra/ConfiguredVetoExtensionTest.java | 148 --------- modules/injection/injection-api/pom.xml | 5 + .../org/apache/tamaya/inject/api/Config.java | 8 +- .../apache/tamaya/inject/api/DynamicValue.java | 4 +- .../tamaya/inject/spi/BaseDynamicValue.java | 26 +- .../tamaya/inject/spi/ConfiguredMethod.java | 2 +- .../tamaya/inject/spi/InjectionUtils.java | 2 +- .../tamaya/inject/spi/BaseDynamicValueTest.java | 2 +- .../ConfigTemplateInvocationHandler.java | 2 +- .../inject/internal/ConfiguredFieldImpl.java | 4 +- .../inject/internal/ConfiguredSetterMethod.java | 2 +- .../inject/internal/ConfiguredTypeImpl.java | 2 +- .../internal/DefaultConfigurationInjector.java | 8 +- .../inject/internal/DefaultDynamicValue.java | 10 +- .../tamaya/inject/internal/InjectionHelper.java | 27 +- .../java/annottext/NonAnnotatedConfigBean.java | 2 +- .../tamaya/inject/TamayaInjectionTest.java | 4 +- .../internal/DefaultDynamicValueTest.java | 15 +- .../apache/tamaya/jndi/JNDIPropertySource.java | 6 +- .../microprofile/MicroprofileAdapter.java | 4 +- .../microprofile/MicroprofileConfigBuilder.java | 6 +- .../MicroprofileConfigProviderResolver.java | 6 +- .../microprofile/MicroprofileConverter.java | 10 +- .../microprofile/TamayaConfiguration.java | 12 +- .../microprofile/TamayaPropertyConverter.java | 3 +- .../microprofile/TamayaPropertySource.java | 8 +- .../cdi/MicroprofileConfigurationProducer.java | 12 +- .../converter/BooleanAsIntegerConverterFix.java | 5 +- .../converter/ProviderConverter.java | 43 +-- .../microprofile/MicroprofileAdapterTest.java | 8 +- .../MicroprofileConfigProviderTest.java | 5 +- .../microprofile/MicroprofileConfigTest.java | 3 + .../UppercasePropertyConverter.java | 4 +- .../mutableconfig/ConfigChangeRequest.java | 6 +- .../mutableconfig/MutableConfiguration.java | 2 +- .../MutableConfigurationProvider.java | 4 +- .../MutableConfigurationProviderTest.java | 5 +- .../mutableconfig/MutableConfigurationTest.java | 16 +- .../tamaya/optional/OptionalConfiguration.java | 4 +- .../org/apache/tamaya/osgi/ConfigChanger.java | 5 +- .../org/apache/tamaya/osgi/ConfigHistory.java | 8 +- .../tamaya/osgi/commands/ConfigCommands.java | 18 +- .../tamaya/osgi/commands/HistoryCommands.java | 2 +- .../osgi/commands/TamayaConfigService.java | 18 +- .../org/apache/tamaya/osgi/BackupsTest.java | 6 +- .../osgi/commands/HistoryCommandsTest.java | 2 +- .../tamaya/gogo/shell/BackupCommands.java | 2 +- .../tamaya/gogo/shell/ConfigCommands.java | 4 +- .../tamaya/gogo/shell/HistoryCommands.java | 8 +- .../karaf/shell/ApplyTamayaConfigCommand.java | 4 +- .../karaf/shell/HistoryMaxsizeCommand.java | 2 +- .../karaf/shell/HistoryMaxsizeSetCommand.java | 4 +- .../org/apache/tamaya/resolver/Resolver.java | 60 +++- .../resolver/internal/ConfigResolver.java | 19 +- .../internal/DefaultExpressionEvaluator.java | 2 +- .../internal/ExpressionResolutionFilter.java | 29 +- .../resolver/internal/ResourceResolver.java | 39 +-- .../tamaya/resolver/ConfigResolutionTest.java | 37 +-- .../apache/tamaya/resolver/ResolverTest.java | 30 +- modules/resources/README.md | 2 +- .../AbstractPathPropertySourceProvider.java | 18 +- .../tamaya/resource/BaseResourceResolver.java | 52 +--- .../apache/tamaya/resource/ConfigResources.java | 16 +- .../tamaya/resource/ResourceResolver.java | 17 +- .../internal/ClassPathResourceLocator.java | 5 +- .../resource/internal/ClasspathCollector.java | 10 +- .../internal/DefaultResourceResolver.java | 4 +- .../tamaya/resource/internal/FileCollector.java | 6 +- .../tamaya/resource/internal/VfsSupport.java | 6 +- .../AbstractPathPropertySourceProviderTest.java | 2 +- .../internal/ClasspathCollectorTest.java | 14 +- .../spring/TamayaSpringPropertySource.java | 3 +- 145 files changed, 1564 insertions(+), 1827 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/examples/01-resources-example/src/main/java/org/apache/tamaya/ext/examples/resources/Main.java ---------------------------------------------------------------------- diff --git a/examples/01-resources-example/src/main/java/org/apache/tamaya/ext/examples/resources/Main.java b/examples/01-resources-example/src/main/java/org/apache/tamaya/ext/examples/resources/Main.java index db5cc3e..92abbe4 100644 --- a/examples/01-resources-example/src/main/java/org/apache/tamaya/ext/examples/resources/Main.java +++ b/examples/01-resources-example/src/main/java/org/apache/tamaya/ext/examples/resources/Main.java @@ -43,7 +43,7 @@ public class Main { } public static void main(String[] args){ - Configuration cfg = ConfigurationProvider.getConfiguration(); + Configuration cfg = Configuration.current(); System.out.println("****************************************************"); System.out.println("Example for an property sources using a "); http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/examples/02-resolver-example/src/main/java/org/apache/tamay/ext/examples/resolver/Main.java ---------------------------------------------------------------------- diff --git a/examples/02-resolver-example/src/main/java/org/apache/tamay/ext/examples/resolver/Main.java b/examples/02-resolver-example/src/main/java/org/apache/tamay/ext/examples/resolver/Main.java index 6b99c57..b9bba45 100644 --- a/examples/02-resolver-example/src/main/java/org/apache/tamay/ext/examples/resolver/Main.java +++ b/examples/02-resolver-example/src/main/java/org/apache/tamay/ext/examples/resolver/Main.java @@ -47,7 +47,7 @@ public class Main { } public static void main(String[] args){ - Configuration cfg = ConfigurationProvider.getConfiguration(); + Configuration cfg = Configuration.current(); System.out.println("****************************************************"); System.out.println("Resolver Example"); http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/examples/03-injection-example/src/test/java/org/apache/tamaya/ext/examples/injection/MinimalTest.java ---------------------------------------------------------------------- diff --git a/examples/03-injection-example/src/test/java/org/apache/tamaya/ext/examples/injection/MinimalTest.java b/examples/03-injection-example/src/test/java/org/apache/tamaya/ext/examples/injection/MinimalTest.java index 022b5b8..d0d7b1c 100644 --- a/examples/03-injection-example/src/test/java/org/apache/tamaya/ext/examples/injection/MinimalTest.java +++ b/examples/03-injection-example/src/test/java/org/apache/tamaya/ext/examples/injection/MinimalTest.java @@ -32,7 +32,7 @@ public class MinimalTest { @BeforeClass public static void before() throws InterruptedException { - config = ConfigurationProvider.getConfiguration(); + config = Configuration.current(); Thread.sleep(100L); } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/examples/04-events-example/src/main/java/org/apache/tamaya/ext/examples/events/Main.java ---------------------------------------------------------------------- diff --git a/examples/04-events-example/src/main/java/org/apache/tamaya/ext/examples/events/Main.java b/examples/04-events-example/src/main/java/org/apache/tamaya/ext/examples/events/Main.java index 67d680c..2cf3fa0 100644 --- a/examples/04-events-example/src/main/java/org/apache/tamaya/ext/examples/events/Main.java +++ b/examples/04-events-example/src/main/java/org/apache/tamaya/ext/examples/events/Main.java @@ -64,7 +64,7 @@ public class Main { ConfigEventManager.addListener(new ConfigurationChangeListener()); ConfigEventManager.setChangeMonitoringPeriod(1_000L); ConfigEventManager.enableChangeMonitoring(true); - Configuration configuration = ConfigurationProvider.getConfiguration(); + Configuration configuration = Configuration.current(); for (Map.Entry<String, String> e : configuration.getProperties().entrySet()) { System.out.println(e.getKey() + ": " + e.getValue()); http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/examples/05-spring-example/src/main/java/org/apache/tamaya/springexample/ColorConverter.java ---------------------------------------------------------------------- diff --git a/examples/05-spring-example/src/main/java/org/apache/tamaya/springexample/ColorConverter.java b/examples/05-spring-example/src/main/java/org/apache/tamaya/springexample/ColorConverter.java index 3ec3977..d625949 100644 --- a/examples/05-spring-example/src/main/java/org/apache/tamaya/springexample/ColorConverter.java +++ b/examples/05-spring-example/src/main/java/org/apache/tamaya/springexample/ColorConverter.java @@ -15,7 +15,6 @@ */ package org.apache.tamaya.springexample; -import org.apache.tamaya.spi.ConversionContext; import org.apache.tamaya.spi.PropertyConverter; import java.awt.*; @@ -26,7 +25,7 @@ import java.awt.*; public class ColorConverter implements PropertyConverter<Color>{ @Override - public Color convert(String value, ConversionContext context) { + public Color convert(String value) { if(value.length()<7){ return null; } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/examples/05-spring-example/src/main/java/org/apache/tamaya/springexample/WelcomeController.java ---------------------------------------------------------------------- diff --git a/examples/05-spring-example/src/main/java/org/apache/tamaya/springexample/WelcomeController.java b/examples/05-spring-example/src/main/java/org/apache/tamaya/springexample/WelcomeController.java index affafef..352822b 100644 --- a/examples/05-spring-example/src/main/java/org/apache/tamaya/springexample/WelcomeController.java +++ b/examples/05-spring-example/src/main/java/org/apache/tamaya/springexample/WelcomeController.java @@ -20,7 +20,6 @@ import java.util.Date; import java.util.Map; import org.apache.tamaya.Configuration; -import org.apache.tamaya.ConfigurationProvider; import org.apache.tamaya.functions.ConfigurationFunctions; import org.apache.tamaya.inject.api.Config; import org.apache.tamaya.inject.api.DynamicValue; @@ -72,19 +71,19 @@ public class WelcomeController { @GetMapping("/config") public String config(Map<String, Object> model) { - Configuration config = ConfigurationProvider.getConfiguration(); + Configuration config = Configuration.current(); model.put("filter", "NO FILTER"); model.put("config", config - .query(ConfigurationFunctions.textInfo())); + .adapt(ConfigurationFunctions.textInfo())); return "config"; } @GetMapping(value="/config/{path}") public String config(@PathVariable("path") String path, Map<String, Object> model) { - Configuration config = ConfigurationProvider.getConfiguration(); + Configuration config = Configuration.current(); model.put("filter", path); - model.put("config", config.with(ConfigurationFunctions.section(path)) - .query(ConfigurationFunctions.textInfo())); + model.put("config", config.map(ConfigurationFunctions.section(path)) + .adapt(ConfigurationFunctions.textInfo())); return "config"; } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/examples/05-spring-example/src/main/resources/templates/welcome.ftl ---------------------------------------------------------------------- diff --git a/examples/05-spring-example/src/main/resources/templates/welcome.ftl b/examples/05-spring-example/src/main/resources/templates/welcome.ftl index 183d3de..d70ef9a 100644 --- a/examples/05-spring-example/src/main/resources/templates/welcome.ftl +++ b/examples/05-spring-example/src/main/resources/templates/welcome.ftl @@ -26,7 +26,7 @@ <h2>Accessing properties programmatically</h2> Configuration properties can be easily accessed with Tamaya's Java API:<br/> <pre> -Configuration config = ConfigurationProvider.getConfiguration(); +Configuration config = Configuration.current(); String value = config.get("foreground.color"); </pre> Hereby Tamaya also offers type safe access:<br/> http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/modules/events/src/main/java/org/apache/tamaya/events/ConfigEvent.java ---------------------------------------------------------------------- diff --git a/modules/events/src/main/java/org/apache/tamaya/events/ConfigEvent.java b/modules/events/src/main/java/org/apache/tamaya/events/ConfigEvent.java index 5a713d7..262786c 100644 --- a/modules/events/src/main/java/org/apache/tamaya/events/ConfigEvent.java +++ b/modules/events/src/main/java/org/apache/tamaya/events/ConfigEvent.java @@ -20,7 +20,7 @@ package org.apache.tamaya.events; /** - * Event that contains a set current changes that were applied or could be applied. + * Event that contains a setCurrent current changes that were applied or could be applied. * @param <T> the resource type. */ public interface ConfigEvent<T>{ http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/modules/events/src/main/java/org/apache/tamaya/events/ConfigEventManager.java ---------------------------------------------------------------------- diff --git a/modules/events/src/main/java/org/apache/tamaya/events/ConfigEventManager.java b/modules/events/src/main/java/org/apache/tamaya/events/ConfigEventManager.java index 96dc9a5..1830dfb 100644 --- a/modules/events/src/main/java/org/apache/tamaya/events/ConfigEventManager.java +++ b/modules/events/src/main/java/org/apache/tamaya/events/ConfigEventManager.java @@ -34,7 +34,8 @@ public final class ConfigEventManager { * The backing SPI. */ private static final ConfigEventManagerSpi spi(){ - ConfigEventManagerSpi spi = ServiceContextManager.getServiceContext() + ConfigEventManagerSpi spi = ServiceContextManager.getServiceContext( + Thread.currentThread().getContextClassLoader()) .getService(ConfigEventManagerSpi.class); if(spi==null){ throw new ConfigException("No SPI registered for " + http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChange.java ---------------------------------------------------------------------- diff --git a/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChange.java b/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChange.java index 9cdd4fc..5b75b61 100644 --- a/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChange.java +++ b/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChange.java @@ -29,7 +29,7 @@ import java.util.Map; import java.util.UUID; /** - * Event that contains a set current changes that were applied or could be applied. + * Event that contains a setCurrent current changes that were applied or could be applied. * This class is immutable and thread-safe. To create instances use * {@link PropertySourceChangeBuilder}. * @@ -42,13 +42,13 @@ public final class ConfigurationChange implements ConfigEvent<Configuration>, Se private final FrozenConfiguration configuration; /** The base version, usable for optimistic locking. */ private String version = UUID.randomUUID().toString(); - /** The timestamp of the change set in millis from the epoch. */ + /** The timestamp of the change setCurrent in millis from the epoch. */ private long timestamp = System.currentTimeMillis(); /** The recorded changes. */ private final Map<String,PropertyChangeEvent> changes = new HashMap<>(); /** - * Get an empty change set for the given provider. + * Get an empty change setCurrent for the given provider. * @param configuration The configuration changed, not null. * @return an empty ConfigurationChangeSet instance. */ @@ -208,8 +208,8 @@ public final class ConfigurationChange implements ConfigEvent<Configuration>, Se } /** - * CHecks if the current change set does not contain any changes. - * @return tru, if the change set is empty. + * CHecks if the current change setCurrent does not contain any changes. + * @return tru, if the change setCurrent is empty. */ public boolean isEmpty(){ return this.changes.isEmpty(); http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChangeBuilder.java ---------------------------------------------------------------------- diff --git a/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChangeBuilder.java b/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChangeBuilder.java index 8becb11..79061ba 100644 --- a/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChangeBuilder.java +++ b/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChangeBuilder.java @@ -29,7 +29,7 @@ import java.util.SortedMap; import java.util.TreeMap; /** - * Models a set current changes applied to a {@link org.apache.tamaya.spi.PropertySource}. Consumers of these events + * Models a setCurrent current changes applied to a {@link org.apache.tamaya.spi.PropertySource}. Consumers of these events * can observe changes to property sources and * <ol> * <li>Check if their current configuration instance ({@link org.apache.tamaya.spi.ConfigurationContext} @@ -73,7 +73,7 @@ public final class ConfigurationChangeBuilder { * @return the builder for chaining. */ public static ConfigurationChangeBuilder of() { - return new ConfigurationChangeBuilder(ConfigurationProvider.getConfiguration()); + return new ConfigurationChangeBuilder(Configuration.current()); } /** @@ -127,7 +127,7 @@ public final class ConfigurationChangeBuilder { } /* - * Apply a version/UUID to the set being built. + * Apply a version/UUID to the setCurrent being built. * @param version the version to apply, or null, to let the system generate a version for you. * @return the builder for chaining. */ @@ -137,7 +137,7 @@ public final class ConfigurationChangeBuilder { } /* - * Apply given timestamp to the set being built. + * Apply given timestamp to the setCurrent being built. * @param version the version to apply, or null, to let the system generate a version for you. * @return the builder for chaining. */ @@ -173,7 +173,7 @@ public final class ConfigurationChangeBuilder { } /** - * Get the current values, also considering any changes recorded within this change set. + * Get the current values, also considering any changes recorded within this change setCurrent. * * @param key the key current the entry, not null. * @return the keys, or null. @@ -229,7 +229,7 @@ public final class ConfigurationChangeBuilder { } /** - * This method will create a change set that clears all entries fromMap the given base configuration/properties. + * This method will create a change setCurrent that clears all entries fromMap the given base configuration/properties. * * @return the builder for chaining. */ @@ -244,26 +244,26 @@ public final class ConfigurationChangeBuilder { } /** - * Checks if the change set is empty, i.e. does not contain any changes. + * Checks if the change setCurrent is empty, i.e. does not contain any changes. * - * @return true, if the set is empty. + * @return true, if the setCurrent is empty. */ public boolean isEmpty() { return this.delta.isEmpty(); } /** - * Resets this change set instance. This will clear all changes done to this builder, so the - * set will be empty. + * Resets this change setCurrent instance. This will clear all changes done to this builder, so the + * setCurrent will be empty. */ public void reset() { this.delta.clear(); } /** - * Builds the corresponding change set. + * Builds the corresponding change setCurrent. * - * @return the new change set, never null. + * @return the new change setCurrent, never null. */ public ConfigurationChange build() { return new ConfigurationChange(this); http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/modules/events/src/main/java/org/apache/tamaya/events/FrozenConfiguration.java ---------------------------------------------------------------------- diff --git a/modules/events/src/main/java/org/apache/tamaya/events/FrozenConfiguration.java b/modules/events/src/main/java/org/apache/tamaya/events/FrozenConfiguration.java index 21ef873..2707200 100644 --- a/modules/events/src/main/java/org/apache/tamaya/events/FrozenConfiguration.java +++ b/modules/events/src/main/java/org/apache/tamaya/events/FrozenConfiguration.java @@ -117,22 +117,26 @@ public final class FrozenConfiguration implements Configuration, Serializable { if (value != null) { List<PropertyConverter<T>> converters = getContext() .getPropertyConverters(type); - ConversionContext context = new ConversionContext.Builder(this, - getContext(), key,type).build(); - for (PropertyConverter<T> converter : converters) { - try { - T t = converter.convert(value, context); - if (t != null) { - return t; + ConversionContext context = new ConversionContext.Builder(this, key,type).build(); + try { + ConversionContext.set(context); + for (PropertyConverter<T> converter : converters) { + try { + T t = converter.convert(value); + if (t != null) { + return t; + } + } catch (Exception e) { + Logger.getLogger(getClass().getName()) + .log(Level.FINEST, "PropertyConverter: " + converter + " failed to convert value: " + value, + e); } - } catch (Exception e) { - Logger.getLogger(getClass().getName()) - .log(Level.FINEST, "PropertyConverter: " + converter + " failed to convert value: " + value, - e); } + throw new ConfigException("Unparseable config value for type: " + type.getRawType().getName() + ": " + key + + ", supported formats: " + context.getSupportedFormats()); + }finally{ + ConversionContext.reset(); } - throw new ConfigException("Unparseable config value for type: " + type.getRawType().getName() + ": " + key - + ", supported formats: " + context.getSupportedFormats()); } return null; http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChange.java ---------------------------------------------------------------------- diff --git a/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChange.java b/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChange.java index e7782a0..d7e73b8 100644 --- a/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChange.java +++ b/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChange.java @@ -29,7 +29,7 @@ import java.util.Map; import java.util.UUID; /** - * Event that contains a set current changes that were applied or could be applied. + * Event that contains a setCurrent current changes that were applied or could be applied. * This class is immutable and thread-safe. To create instances use * {@link PropertySourceChangeBuilder}. * @@ -42,7 +42,7 @@ public final class PropertySourceChange implements ConfigEvent<PropertySource>, private final FrozenPropertySource propertySource; /** The base version, usable for optimistic locking. */ private String version = UUID.randomUUID().toString(); - /** The timestamp of the change set in millis from the epoch. */ + /** The timestamp of the change setCurrent in millis from the epoch. */ private long timestamp = System.currentTimeMillis(); /** The recorded changes. */ private final Map<String,PropertyChangeEvent> changes = new HashMap<>(); @@ -193,8 +193,8 @@ public final class PropertySourceChange implements ConfigEvent<PropertySource>, } /** - * CHecks if the current change set does not contain any changes. - * @return tru, if the change set is empty. + * CHecks if the current change setCurrent does not contain any changes. + * @return tru, if the change setCurrent is empty. */ public boolean isEmpty(){ return this.changes.isEmpty(); http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChangeBuilder.java ---------------------------------------------------------------------- diff --git a/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChangeBuilder.java b/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChangeBuilder.java index 1e58855..51da86d 100644 --- a/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChangeBuilder.java +++ b/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChangeBuilder.java @@ -31,7 +31,7 @@ import java.util.SortedMap; import java.util.TreeMap; /** - * Models a set current changes applied to a {@link org.apache.tamaya.spi.PropertySource}. Consumers of these events + * Models a setCurrent current changes applied to a {@link org.apache.tamaya.spi.PropertySource}. Consumers of these events * can observing changes to property sources and * <ol> * <li>Check if their current configuration instance ({@link org.apache.tamaya.spi.ConfigurationContext} @@ -109,7 +109,7 @@ public final class PropertySourceChangeBuilder { } /* - * Apply a version/UUID to the set being built. + * Apply a version/UUID to the setCurrent being built. * @param version the version to apply, or null, to let the system generate a version for you. * @return the builder for chaining. */ @@ -119,7 +119,7 @@ public final class PropertySourceChangeBuilder { } /* - * Apply given timestamp to the set being built. + * Apply given timestamp to the setCurrent being built. * @param version the version to apply, or null, to let the system generate a version for you. * @return the builder for chaining. */ @@ -144,7 +144,7 @@ public final class PropertySourceChangeBuilder { } /** - * Get the current values, also considering any changes recorded within this change set. + * Get the current values, also considering any changes recorded within this change setCurrent. * * @param key the key current the entry, not null. * @return the keys, or null. @@ -200,7 +200,7 @@ public final class PropertySourceChangeBuilder { } /** - * This method will create a change set that clears all entries fromMap the given base configuration/properties. + * This method will create a change setCurrent that clears all entries fromMap the given base configuration/properties. * * @return the builder for chaining. */ @@ -213,17 +213,17 @@ public final class PropertySourceChangeBuilder { } /** - * Checks if the change set is empty, i.e. does not contain any changes. + * Checks if the change setCurrent is empty, i.e. does not contain any changes. * - * @return true, if the set is empty. + * @return true, if the setCurrent is empty. */ public boolean isEmpty() { return this.delta.isEmpty(); } /** - * Resets this change set instance. This will clear all changes done to this builder, so the - * set will be empty. + * Resets this change setCurrent instance. This will clear all changes done to this builder, so the + * setCurrent will be empty. */ public void reset() { this.delta.clear(); @@ -231,9 +231,9 @@ public final class PropertySourceChangeBuilder { /** - * Builds the corresponding change set. + * Builds the corresponding change setCurrent. * - * @return the new change set, never null. + * @return the new change setCurrent, never null. */ public PropertySourceChange build() { return new PropertySourceChange(this); http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/modules/events/src/main/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserver.java ---------------------------------------------------------------------- diff --git a/modules/events/src/main/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserver.java b/modules/events/src/main/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserver.java index 51951de..c806446 100644 --- a/modules/events/src/main/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserver.java +++ b/modules/events/src/main/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserver.java @@ -18,6 +18,7 @@ */ package org.apache.tamaya.events.internal; +import org.apache.tamaya.Configuration; import org.apache.tamaya.ConfigurationProvider; import org.apache.tamaya.events.ConfigEventManager; import org.apache.tamaya.events.ConfigurationChange; @@ -61,7 +62,7 @@ public class DefaultConfigChangeObserver { public void checkConfigurationUpdate() { LOG.finest("Checking configuration for changes..."); - FrozenConfiguration frozenConfig = FrozenConfiguration.of(ConfigurationProvider.getConfiguration()); + FrozenConfiguration frozenConfig = FrozenConfiguration.of(Configuration.current()); ConfigurationChange changes; if (getLastConfig() != null) { http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/modules/events/src/main/java/org/apache/tamaya/events/internal/DefaultConfigEventManagerSpi.java ---------------------------------------------------------------------- diff --git a/modules/events/src/main/java/org/apache/tamaya/events/internal/DefaultConfigEventManagerSpi.java b/modules/events/src/main/java/org/apache/tamaya/events/internal/DefaultConfigEventManagerSpi.java index bc5fdcf..a0d58bd 100644 --- a/modules/events/src/main/java/org/apache/tamaya/events/internal/DefaultConfigEventManagerSpi.java +++ b/modules/events/src/main/java/org/apache/tamaya/events/internal/DefaultConfigEventManagerSpi.java @@ -52,7 +52,9 @@ public class DefaultConfigEventManagerSpi implements ConfigEventManagerSpi { */ public DefaultConfigEventManagerSpi() { try { - for (ConfigEventListener l : ServiceContextManager.getServiceContext().getServices(ConfigEventListener.class)) { + for (ConfigEventListener l : ServiceContextManager.getServiceContext( + Thread.currentThread().getContextClassLoader() + ).getServices(ConfigEventListener.class)) { try { addListener(l); } catch (Exception e) { http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/modules/events/src/test/java/org/apache/tamaya/events/ConfigurationChangeTest.java ---------------------------------------------------------------------- diff --git a/modules/events/src/test/java/org/apache/tamaya/events/ConfigurationChangeTest.java b/modules/events/src/test/java/org/apache/tamaya/events/ConfigurationChangeTest.java index 60f40c2..b90b0a9 100644 --- a/modules/events/src/test/java/org/apache/tamaya/events/ConfigurationChangeTest.java +++ b/modules/events/src/test/java/org/apache/tamaya/events/ConfigurationChangeTest.java @@ -33,14 +33,14 @@ public class ConfigurationChangeTest { @Test public void testEmptyChangeSet() throws Exception { - ConfigurationChange change = ConfigurationChange.emptyChangeSet(ConfigurationProvider.getConfiguration()); + ConfigurationChange change = ConfigurationChange.emptyChangeSet(Configuration.current()); assertThat(change).isNotNull(); assertThat(change.getChanges()).isEmpty(); } @Test public void testGetConfiguration() throws Exception { - Configuration config = ConfigurationProvider.getConfiguration(); + Configuration config = Configuration.current(); ConfigurationChange change = ConfigurationChangeBuilder.of(config).build(); assertNotNull(change); assertTrue(change.getUpdatedSize()==0); @@ -48,7 +48,7 @@ public class ConfigurationChangeTest { assertTrue(change.getRemovedSize()==0); assertTrue(change.getChanges().size()==0); for (Map.Entry<String, String> en : config.getProperties().entrySet()) { - if (!"[meta]frozenAt".equals(en.getKey())) { + if (!"[getMeta]frozenAt".equals(en.getKey())) { if(en.getKey().contains("random.new")){ // dynamic generated value! continue; } @@ -59,7 +59,7 @@ public class ConfigurationChangeTest { @Test public void testGetVersion() throws Exception { - Configuration config = ConfigurationProvider.getConfiguration(); + Configuration config = Configuration.current(); ConfigurationChange change = ConfigurationChangeBuilder.of(config).build(); assertNotNull(change.getVersion()); change = ConfigurationChangeBuilder.of(config).setVersion("version2").build(); @@ -68,17 +68,18 @@ public class ConfigurationChangeTest { @Test public void testGetTimestamp() throws Exception { - Configuration config = ConfigurationProvider.getConfiguration(); - Thread.sleep(10L); + long startTS = System.currentTimeMillis(); + Configuration config = Configuration.current(); + Thread.sleep(20L); ConfigurationChange change = ConfigurationChangeBuilder.of(config).build(); - assertTrue((System.currentTimeMillis() - change.getTimestamp()) > 0L); + assertTrue((change.getTimestamp() - startTS) > 0L); change = ConfigurationChangeBuilder.of(config).setTimestamp(10L).build(); assertEquals(10L, change.getTimestamp()); } @Test public void testGetEvents() throws Exception { - Configuration config = ConfigurationProvider.getConfiguration(); + Configuration config = Configuration.current(); ConfigurationChange change = ConfigurationChangeBuilder.of(config).removeKey("key1", "key2").build(); assertTrue(change.getChanges().size() == 2); change = ConfigurationChangeBuilder.of(config).addChange("key1Added", "value1Added").build(); @@ -87,7 +88,7 @@ public class ConfigurationChangeTest { @Test public void testGetRemovedSize() throws Exception { - Configuration config = ConfigurationProvider.getConfiguration(); + Configuration config = Configuration.current(); ConfigurationChange change = ConfigurationChangeBuilder.of(config).removeKey("java.version", "key2").build(); assertTrue(change.getRemovedSize() == 2); assertTrue(change.getAddedSize() == 0); @@ -95,7 +96,7 @@ public class ConfigurationChangeTest { @Test public void testGetAddedSize() throws Exception { - Configuration config = ConfigurationProvider.getConfiguration(); + Configuration config = Configuration.current(); ConfigurationChange change = ConfigurationChangeBuilder.of(config).addChange("key1", "key2").build(); assertTrue(change.getAddedSize() == 1); assertTrue(change.getRemovedSize() == 0); @@ -103,35 +104,35 @@ public class ConfigurationChangeTest { @Test public void testGetUpdatedSize() throws Exception { - Configuration config = ConfigurationProvider.getConfiguration(); + Configuration config = Configuration.current(); ConfigurationChange change = ConfigurationChangeBuilder.of(config).addChange("java.version", "1.8").build(); assertTrue(change.getUpdatedSize() == 1); } @Test public void testIsRemoved() throws Exception { - Configuration config = ConfigurationProvider.getConfiguration(); + Configuration config = Configuration.current(); ConfigurationChange change = ConfigurationChangeBuilder.of(config).removeKey("java.version").build(); assertTrue(change.isRemoved("java.version")); } @Test public void testIsAdded() throws Exception { - Configuration config = ConfigurationProvider.getConfiguration(); + Configuration config = Configuration.current(); ConfigurationChange change = ConfigurationChangeBuilder.of(config).addChange("key1", "key2").build(); assertTrue(change.isAdded("key1")); } @Test public void testIsUpdated() throws Exception { - Configuration config = ConfigurationProvider.getConfiguration(); + Configuration config = Configuration.current(); ConfigurationChange change = ConfigurationChangeBuilder.of(config).addChange("java.version", "1.8").build(); assertTrue(change.isUpdated("java.version")); } @Test public void testContainsKey() throws Exception { - Configuration config = ConfigurationProvider.getConfiguration(); + Configuration config = Configuration.current(); ConfigurationChange change = ConfigurationChangeBuilder.of(config).addChange("key1", "key2").build(); assertTrue(change.isKeyAffected("key1")); assertFalse(change.isKeyAffected("key2")); @@ -142,14 +143,14 @@ public class ConfigurationChangeTest { @Test public void testIsEmpty() throws Exception { - Configuration config = ConfigurationProvider.getConfiguration(); + Configuration config = Configuration.current(); ConfigurationChange change = ConfigurationChangeBuilder.of(config).build(); assertTrue(change.isEmpty()); } @Test public void testToString() throws Exception { - Configuration config = ConfigurationProvider.getConfiguration(); + Configuration config = Configuration.current(); ConfigurationChange change = ConfigurationChangeBuilder.of(config).removeKey("java.version").build(); String toString = change.toString(); http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/modules/events/src/test/java/org/apache/tamaya/events/RandomPropertySource.java ---------------------------------------------------------------------- diff --git a/modules/events/src/test/java/org/apache/tamaya/events/RandomPropertySource.java b/modules/events/src/test/java/org/apache/tamaya/events/RandomPropertySource.java index 4faa1b5..36bcaaa 100644 --- a/modules/events/src/test/java/org/apache/tamaya/events/RandomPropertySource.java +++ b/modules/events/src/test/java/org/apache/tamaya/events/RandomPropertySource.java @@ -52,8 +52,8 @@ public class RandomPropertySource implements PropertySource{ @Override public Map<String, PropertyValue> getProperties() { synchronized(data) { - data.put("random.new", PropertyValue.builder("random.new", String.valueOf(Math.random()), getName()) - .addMetaEntry("_random.new.timestamp", String.valueOf(System.currentTimeMillis())).build()); + data.put("random.new", PropertyValue.of("random.new", String.valueOf(Math.random()), getName()) + .setMeta("_random.new.timestamp", String.valueOf(System.currentTimeMillis()))); return new HashMap<>(data); } } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/modules/events/src/test/java/org/apache/tamaya/events/TestConfigView.java ---------------------------------------------------------------------- diff --git a/modules/events/src/test/java/org/apache/tamaya/events/TestConfigView.java b/modules/events/src/test/java/org/apache/tamaya/events/TestConfigView.java index b15d966..2ec7c1b 100644 --- a/modules/events/src/test/java/org/apache/tamaya/events/TestConfigView.java +++ b/modules/events/src/test/java/org/apache/tamaya/events/TestConfigView.java @@ -125,20 +125,25 @@ public class TestConfigView implements ConfigOperator{ .getPropertyConverters(type); ConversionContext context = new ConversionContext.Builder( key,type).build(); - for (PropertyConverter<T> converter : converters) { - try { - T t = converter.convert(value, context); - if (t != null) { - return t; + try { + ConversionContext.set(context); + for (PropertyConverter<T> converter : converters) { + try { + T t = converter.convert(value); + if (t != null) { + return t; + } + } catch (Exception e) { + Logger.getLogger(getClass().getName()) + .log(Level.FINEST, "PropertyConverter: " + converter + " failed to convert value: " + + value, e); } - } catch (Exception e) { - Logger.getLogger(getClass().getName()) - .log(Level.FINEST, "PropertyConverter: " + converter + " failed to convert value: " - + value, e); } + throw new ConfigException("Unparseable config value for type: " + type.getRawType().getName() + ": " + + key + ", supportedFormats: " + context.getSupportedFormats()); + }finally{ + ConversionContext.reset(); } - throw new ConfigException("Unparseable config value for type: " + type.getRawType().getName() + ": " - + key + ", supportedFormats: " + context.getSupportedFormats()); } return null; } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/modules/events/src/test/java/org/apache/tamaya/events/folderobserver/ObservingPropertySourceProvider.java ---------------------------------------------------------------------- diff --git a/modules/events/src/test/java/org/apache/tamaya/events/folderobserver/ObservingPropertySourceProvider.java b/modules/events/src/test/java/org/apache/tamaya/events/folderobserver/ObservingPropertySourceProvider.java index c821d43..8cb4d8d 100644 --- a/modules/events/src/test/java/org/apache/tamaya/events/folderobserver/ObservingPropertySourceProvider.java +++ b/modules/events/src/test/java/org/apache/tamaya/events/folderobserver/ObservingPropertySourceProvider.java @@ -68,7 +68,7 @@ public class ObservingPropertySourceProvider implements PropertySourceProvider, private final ExecutorService executor = Executors.newSingleThreadExecutor(); /** - * Constructor using an explicit directory, ignoring all kind of configuration, if set. + * Constructor using an explicit directory, ignoring all kind of configuration, if setCurrent. * * @param directory the target directory. If null, the default configuration and system property are used. */ http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/modules/events/src/test/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserverTest.java ---------------------------------------------------------------------- diff --git a/modules/events/src/test/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserverTest.java b/modules/events/src/test/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserverTest.java index e0fa52b..4bceacc 100644 --- a/modules/events/src/test/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserverTest.java +++ b/modules/events/src/test/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserverTest.java @@ -57,7 +57,7 @@ public class DefaultConfigChangeObserverTest { observer.checkConfigurationUpdate(); - assertThat(observer.getLastConfig()).describedAs("After the firt check last configuration must be set.") + assertThat(observer.getLastConfig()).describedAs("After the firt check last configuration must be setCurrent.") .isNotNull(); } @@ -71,7 +71,7 @@ public class DefaultConfigChangeObserverTest { observer.checkConfigurationUpdate(); FrozenConfiguration config2 = observer.getLastConfig(); - assertThat(config1).describedAs("After the firt check last configuration must be set.") + assertThat(config1).describedAs("After the firt check last configuration must be setCurrent.") .isNotEqualTo(config2); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/modules/filter/pom.xml ---------------------------------------------------------------------- diff --git a/modules/filter/pom.xml b/modules/filter/pom.xml index 88ebfa6..272f139 100644 --- a/modules/filter/pom.xml +++ b/modules/filter/pom.xml @@ -41,6 +41,11 @@ under the License. </dependency> <dependency> <groupId>org.apache.tamaya</groupId> + <artifactId>tamaya-spisupport</artifactId> + <version>${tamaya-apicore.version}</version> + </dependency> + <dependency> + <groupId>org.apache.tamaya</groupId> <artifactId>tamaya-core</artifactId> <version>${tamaya-apicore.version}</version> <scope>provided</scope> @@ -57,7 +62,6 @@ under the License. <groupId>org.apache.tamaya</groupId> <artifactId>tamaya-spisupport</artifactId> <version>${project.version}</version> - <scope>test</scope> </dependency> <dependency> <groupId>org.osgi</groupId> http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/modules/filter/src/main/java/org/apache/tamaya/filter/CompositeFilter.java ---------------------------------------------------------------------- diff --git a/modules/filter/src/main/java/org/apache/tamaya/filter/CompositeFilter.java b/modules/filter/src/main/java/org/apache/tamaya/filter/CompositeFilter.java new file mode 100644 index 0000000..0189648 --- /dev/null +++ b/modules/filter/src/main/java/org/apache/tamaya/filter/CompositeFilter.java @@ -0,0 +1,119 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tamaya.filter; + +import org.apache.tamaya.spi.PropertyFilter; +import org.apache.tamaya.spi.PropertyValue; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +/** + * A setCurrent of property filter and accessor methods. This class is built for + * usage within a single threaded context, so it is NOT thread-safe. + */ +public final class CompositeFilter implements PropertyFilter{ + /** The filters. */ + private List<PropertyFilter> filters = new ArrayList<>(); + + /** + * Add a filter. + * @param filter the filter. + */ + public void addFilter(PropertyFilter filter){ + filters.add(filter); + } + + /** + * Adds a filter at given position. + * @param pos the position. + * @param filter the filter. + */ + public void addFilter(int pos, PropertyFilter filter){ + filters.add(pos, filter); + } + + /** + * Removes a filter at a given position. + * @param pos the position. + * @return the filter removed, or null. + */ + public PropertyFilter removeFilter(int pos){ + return filters.remove(pos); + } + + /** + * Removes a filter. + * @param filter the filter to be removed, not null. + */ + public void removeFilter(PropertyFilter filter) { + filters.remove(filter); + } + + /** + * Clears all filters. + */ + public void clearFilters(){ + filters.clear(); + } + + /** + * Set the filters. + * @param filters the filters to be applied. + */ + public void setFilters(PropertyFilter... filters){ + setFilters(Arrays.asList(filters)); + } + + /** + * Set the filters. + * @param filters the filters to be applied. + */ + public void setFilters(Collection<PropertyFilter> filters) { + this.filters.clear(); + this.filters.addAll(filters); + } + + /** + * Get all filters. + * @return all filters. + */ + public List<PropertyFilter> getFilters(){ + return Collections.unmodifiableList(filters); + } + + @Override + public PropertyValue filterProperty(PropertyValue valueToBeFiltered) { + for(PropertyFilter filter:filters){ + valueToBeFiltered = filter.filterProperty(valueToBeFiltered); + } + return valueToBeFiltered; + } + + @Override + public String toString() { + return "ProgrammableFilter{" + + "filters=" + filters + + '}'; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/modules/filter/src/main/java/org/apache/tamaya/filter/ConfigurationFilter.java ---------------------------------------------------------------------- diff --git a/modules/filter/src/main/java/org/apache/tamaya/filter/ConfigurationFilter.java b/modules/filter/src/main/java/org/apache/tamaya/filter/ConfigurationFilter.java index 7f81dcb..54b0af0 100644 --- a/modules/filter/src/main/java/org/apache/tamaya/filter/ConfigurationFilter.java +++ b/modules/filter/src/main/java/org/apache/tamaya/filter/ConfigurationFilter.java @@ -21,7 +21,7 @@ package org.apache.tamaya.filter; import org.apache.tamaya.spi.PropertyFilter; import org.apache.tamaya.spi.PropertyValue; import org.osgi.service.component.annotations.Component; - +import org.apache.tamaya.spi.FilterContext; /** * Hereby @@ -49,17 +49,17 @@ public final class ConfigurationFilter implements PropertyFilter{ } }; - private static final ThreadLocal<FilterContext> THREADED_MAP_FILTERS = new ThreadLocal<FilterContext>(){ + private static final ThreadLocal<CompositeFilter> THREADED_MAP_FILTERS = new ThreadLocal<CompositeFilter>(){ @Override - protected FilterContext initialValue() { - return new FilterContext(); + protected CompositeFilter initialValue() { + return new CompositeFilter(); } }; - private static final ThreadLocal<FilterContext> THREADED_VALUE_FILTERS = new ThreadLocal<FilterContext>(){ + private static final ThreadLocal<CompositeFilter> THREADED_VALUE_FILTERS = new ThreadLocal<CompositeFilter>(){ @Override - protected FilterContext initialValue() { - return new FilterContext(); + protected CompositeFilter initialValue() { + return new CompositeFilter(); } }; @@ -87,7 +87,7 @@ public final class ConfigurationFilter implements PropertyFilter{ * * @return the filtering config, never null. */ - public static FilterContext getSingleValueFilterContext(){ + public static CompositeFilter getSingleValueFilterContext(){ return THREADED_VALUE_FILTERS.get(); } @@ -97,7 +97,7 @@ public final class ConfigurationFilter implements PropertyFilter{ * map. * @return the filtering config, never null. */ - public static FilterContext getMapFilterContext(){ + public static CompositeFilter getMapFilterContext(){ return THREADED_MAP_FILTERS.get(); } @@ -111,14 +111,15 @@ public final class ConfigurationFilter implements PropertyFilter{ } @Override - public PropertyValue filterProperty(PropertyValue valueToBeFiltered, org.apache.tamaya.spi.FilterContext context) { - if(context.isSinglePropertyScoped()){ + public PropertyValue filterProperty(PropertyValue valueToBeFiltered) { + FilterContext context = FilterContext.get(); + if(context==null || context.isSinglePropertyScoped()){ for(PropertyFilter pred: THREADED_VALUE_FILTERS.get().getFilters()){ - valueToBeFiltered = pred.filterProperty(valueToBeFiltered, context); + valueToBeFiltered = pred.filterProperty(valueToBeFiltered); } }else{ for(PropertyFilter pred: THREADED_MAP_FILTERS.get().getFilters()){ - valueToBeFiltered = pred.filterProperty(valueToBeFiltered, context); + valueToBeFiltered = pred.filterProperty(valueToBeFiltered); } } return valueToBeFiltered; http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/modules/filter/src/main/java/org/apache/tamaya/filter/FilterContext.java ---------------------------------------------------------------------- diff --git a/modules/filter/src/main/java/org/apache/tamaya/filter/FilterContext.java b/modules/filter/src/main/java/org/apache/tamaya/filter/FilterContext.java deleted file mode 100644 index 35eb987..0000000 --- a/modules/filter/src/main/java/org/apache/tamaya/filter/FilterContext.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.tamaya.filter; - -import org.apache.tamaya.spi.PropertyFilter; -import org.apache.tamaya.spi.PropertyValue; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.List; - -/** - * A set of property filter and accessor methods. This class is built for - * usage within a single threaded context, so it is NOT thread-safe. - */ -public final class FilterContext implements PropertyFilter{ - /** The filters. */ - private List<PropertyFilter> filters = new ArrayList<>(); - - /** - * Add a filter. - * @param filter the filter. - */ - public void addFilter(PropertyFilter filter){ - filters.add(filter); - } - - /** - * Adds a filter at given position. - * @param pos the position. - * @param filter the filter. - */ - public void addFilter(int pos, PropertyFilter filter){ - filters.add(pos, filter); - } - - /** - * Removes a filter at a given position. - * @param pos the position. - * @return the filter removed, or null. - */ - public PropertyFilter removeFilter(int pos){ - return filters.remove(pos); - } - - /** - * Removes a filter. - * @param filter the filter to be removed, not null. - */ - public void removeFilter(PropertyFilter filter) { - filters.remove(filter); - } - - /** - * Clears all filters. - */ - public void clearFilters(){ - filters.clear(); - } - - /** - * Set the filters. - * @param filters the filters to be applied. - */ - public void setFilters(PropertyFilter... filters){ - setFilters(Arrays.asList(filters)); - } - - /** - * Set the filters. - * @param filters the filters to be applied. - */ - public void setFilters(Collection<PropertyFilter> filters) { - this.filters.clear(); - this.filters.addAll(filters); - } - - /** - * Get all filters. - * @return all filters. - */ - public List<PropertyFilter> getFilters(){ - return Collections.unmodifiableList(filters); - } - - @Override - public PropertyValue filterProperty(PropertyValue valueToBeFiltered, org.apache.tamaya.spi.FilterContext context) { - for(PropertyFilter filter:filters){ - valueToBeFiltered = filter.filterProperty(valueToBeFiltered, context); - } - return valueToBeFiltered; - } - - @Override - public String toString() { - return "ProgrammableFilter{" + - "filters=" + filters + - '}'; - } - -} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/modules/filter/src/main/java/org/apache/tamaya/filter/internal/DefaultMetadataFilter.java ---------------------------------------------------------------------- diff --git a/modules/filter/src/main/java/org/apache/tamaya/filter/internal/DefaultMetadataFilter.java b/modules/filter/src/main/java/org/apache/tamaya/filter/internal/DefaultMetadataFilter.java index e9554a2..fbfcb36 100644 --- a/modules/filter/src/main/java/org/apache/tamaya/filter/internal/DefaultMetadataFilter.java +++ b/modules/filter/src/main/java/org/apache/tamaya/filter/internal/DefaultMetadataFilter.java @@ -19,17 +19,18 @@ package org.apache.tamaya.filter.internal; import org.apache.tamaya.filter.ConfigurationFilter; -import org.apache.tamaya.spi.FilterContext; import org.apache.tamaya.spi.PropertyFilter; import org.apache.tamaya.spi.PropertyValue; +import org.apache.tamaya.spi.FilterContext; /** * Default property filter that hides metadta entries starting with an '_', similar ti {@code etcd}. */ public final class DefaultMetadataFilter implements PropertyFilter{ @Override - public PropertyValue filterProperty(PropertyValue valueToBeFiltered, FilterContext context) { - if(context.isSinglePropertyScoped()){ + public PropertyValue filterProperty(PropertyValue valueToBeFiltered) { + FilterContext context = FilterContext.get(); + if(context==null || context.isSinglePropertyScoped()){ // When accessing keys explicitly, do not hide anything. return valueToBeFiltered; } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/modules/filter/src/test/java/org/apache/tamaya/filter/ConfigurationFilterTest.java ---------------------------------------------------------------------- diff --git a/modules/filter/src/test/java/org/apache/tamaya/filter/ConfigurationFilterTest.java b/modules/filter/src/test/java/org/apache/tamaya/filter/ConfigurationFilterTest.java index a3a75a3..1b812ea 100644 --- a/modules/filter/src/test/java/org/apache/tamaya/filter/ConfigurationFilterTest.java +++ b/modules/filter/src/test/java/org/apache/tamaya/filter/ConfigurationFilterTest.java @@ -20,7 +20,6 @@ package org.apache.tamaya.filter; import org.apache.tamaya.Configuration; import org.apache.tamaya.ConfigurationProvider; -import org.apache.tamaya.spi.FilterContext; import org.apache.tamaya.spi.PropertyFilter; import org.apache.tamaya.spi.PropertyValue; import org.junit.Test; @@ -42,12 +41,12 @@ public class ConfigurationFilterTest { @Test public void testGetSingleFilters() throws Exception { - Configuration config = ConfigurationProvider.getConfiguration(); + Configuration config = Configuration.current(); assertNotNull(ConfigurationFilter.getSingleValueFilterContext()); PropertyFilter testFilter = new PropertyFilter() { @Override - public PropertyValue filterProperty(PropertyValue value, FilterContext context) { - return value.toBuilder().setValue(value.getKey() + ":testGetSingleFilters").build(); + public PropertyValue filterProperty(PropertyValue value) { + return value.setValue(value.getKey() + ":testGetSingleFilters"); } }; ConfigurationFilter.getSingleValueFilterContext().addFilter(testFilter); @@ -58,12 +57,12 @@ public class ConfigurationFilterTest { @Test public void testRemoveSingleFiltersAt0() throws Exception { - Configuration config = ConfigurationProvider.getConfiguration(); + Configuration config = Configuration.current(); assertNotNull(ConfigurationFilter.getSingleValueFilterContext()); PropertyFilter testFilter = new PropertyFilter() { @Override - public PropertyValue filterProperty(PropertyValue value, FilterContext context) { - return value.toBuilder().setValue(value.getKey() + ":testGetSingleFilters").build(); + public PropertyValue filterProperty(PropertyValue value) { + return value.setValue(value.getKey() + ":testGetSingleFilters"); } }; ConfigurationFilter.getSingleValueFilterContext().addFilter(testFilter); @@ -74,12 +73,12 @@ public class ConfigurationFilterTest { @Test public void testGetMapFilters() throws Exception { - Configuration config = ConfigurationProvider.getConfiguration(); + Configuration config = Configuration.current(); assertNotNull(ConfigurationFilter.getMapFilterContext()); PropertyFilter testFilter = new PropertyFilter() { @Override - public PropertyValue filterProperty(PropertyValue value, FilterContext context) { - return value.toBuilder().setValue(value.getKey() + ":testGetMapFilters").build(); + public PropertyValue filterProperty(PropertyValue value) { + return value.setValue(value.getKey() + ":testGetMapFilters"); } }; ConfigurationFilter.getMapFilterContext().addFilter(testFilter); @@ -90,12 +89,12 @@ public class ConfigurationFilterTest { @Test public void testRemoveMapFilterAt0() throws Exception { - Configuration config = ConfigurationProvider.getConfiguration(); + Configuration config = Configuration.current(); assertNotNull(ConfigurationFilter.getMapFilterContext()); PropertyFilter testFilter = new PropertyFilter() { @Override - public PropertyValue filterProperty(PropertyValue value, FilterContext context) { - return value .toBuilder().setValue(value.getKey() + ":testGetMapFilters").build(); + public PropertyValue filterProperty(PropertyValue value) { + return value.setValue(value.getKey() + ":testGetMapFilters"); } }; ConfigurationFilter.getMapFilterContext().addFilter(testFilter); @@ -106,12 +105,12 @@ public class ConfigurationFilterTest { @Test public void testClearFilters() throws Exception { - Configuration config = ConfigurationProvider.getConfiguration(); + Configuration config = Configuration.current(); assertNotNull(ConfigurationFilter.getSingleValueFilterContext()); PropertyFilter testFilter = new PropertyFilter() { @Override - public PropertyValue filterProperty(PropertyValue value, FilterContext context) { - return value.toBuilder().setValue(value.getKey() + ":testGetSingleFilters").build(); + public PropertyValue filterProperty(PropertyValue value) { + return value.setValue(value.getKey() + ":testGetSingleFilters"); } }; ConfigurationFilter.getSingleValueFilterContext().addFilter(testFilter); http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/modules/filter/src/test/java/org/apache/tamaya/filter/ProgrammableFilterTest.java ---------------------------------------------------------------------- diff --git a/modules/filter/src/test/java/org/apache/tamaya/filter/ProgrammableFilterTest.java b/modules/filter/src/test/java/org/apache/tamaya/filter/ProgrammableFilterTest.java index b6e7bb7..ef28970 100644 --- a/modules/filter/src/test/java/org/apache/tamaya/filter/ProgrammableFilterTest.java +++ b/modules/filter/src/test/java/org/apache/tamaya/filter/ProgrammableFilterTest.java @@ -19,6 +19,7 @@ package org.apache.tamaya.filter; import org.apache.tamaya.spi.ConfigurationContext; +import org.apache.tamaya.spi.FilterContext; import org.apache.tamaya.spi.PropertyFilter; import org.apache.tamaya.spi.PropertyValue; import org.apache.tamaya.spisupport.DefaultConfigurationContextBuilder; @@ -32,7 +33,7 @@ import java.util.Map; import static org.junit.Assert.*; /** - * Tests for {@link FilterContext}. Created by atsticks on 11.02.16. + * Tests for {@link CompositeFilter}. Created by atsticks on 11.02.16. */ public class ProgrammableFilterTest { @@ -43,85 +44,148 @@ public class ProgrammableFilterTest { @Test public void testAddRemoveFilter() throws Exception { - FilterContext filter = new FilterContext(); + CompositeFilter filter = new CompositeFilter(); Map<String,PropertyValue> map = new HashMap<>(); - assertEquals(filter.filterProperty(test1Property, new org.apache.tamaya.spi.FilterContext(test1Property, map, context)), test1Property); - assertEquals(filter.filterProperty(test2Property, new org.apache.tamaya.spi.FilterContext(test2Property, map, context)), test2Property); - assertEquals(filter.filterProperty(test3Property, new org.apache.tamaya.spi.FilterContext(test3Property, map, context)), test3Property); - RegexPropertyFilter regexFilter = new RegexPropertyFilter(); - regexFilter.setIncludes("test\\..*"); - filter.addFilter(regexFilter); - assertNull(filter.filterProperty(test1Property, new org.apache.tamaya.spi.FilterContext(test1Property, map, context))); - assertNull(filter.filterProperty(test2Property, new org.apache.tamaya.spi.FilterContext(test2Property, map, context))); - assertEquals(filter.filterProperty(test3Property, new org.apache.tamaya.spi.FilterContext(test3Property, map, context)), test3Property); - filter.removeFilter(0); - assertEquals(filter.filterProperty(test1Property, new org.apache.tamaya.spi.FilterContext(test1Property, map, context)), test1Property); - assertEquals(filter.filterProperty(test2Property, new org.apache.tamaya.spi.FilterContext(test2Property, map, context)), test2Property); - assertEquals(filter.filterProperty(test3Property, new org.apache.tamaya.spi.FilterContext(test3Property, map, context)), test3Property); - filter.addFilter(0, regexFilter); - assertNull(filter.filterProperty(test1Property, new org.apache.tamaya.spi.FilterContext(test1Property, map, context))); - assertNull(filter.filterProperty(test2Property, new org.apache.tamaya.spi.FilterContext(test2Property, map, context))); - assertEquals(filter.filterProperty(test3Property, new org.apache.tamaya.spi.FilterContext(test3Property, map, context)), test3Property); + FilterContext context1 = new FilterContext(test1Property, map, context); + FilterContext context2 = new FilterContext(test2Property, map, context); + FilterContext context3 = new FilterContext(test3Property, map, context); + try{ + FilterContext.set(context1); + assertEquals(filter.filterProperty(test1Property), test1Property); + FilterContext.set(context2); + assertEquals(filter.filterProperty(test2Property), test2Property); + FilterContext.set(context3); + assertEquals(filter.filterProperty(test3Property), test3Property); + RegexPropertyFilter regexFilter = new RegexPropertyFilter(); + regexFilter.setIncludes("test\\..*"); + filter.addFilter(regexFilter); + FilterContext.set(context1); + assertNull(filter.filterProperty(test1Property)); + FilterContext.set(context2); + assertNull(filter.filterProperty(test2Property)); + FilterContext.set(context3); + assertEquals(filter.filterProperty(test3Property), test3Property); + filter.removeFilter(0); + FilterContext.set(context1); + assertEquals(filter.filterProperty(test1Property), test1Property); + FilterContext.set(context2); + assertEquals(filter.filterProperty(test2Property), test2Property); + FilterContext.set(context3); + assertEquals(filter.filterProperty(test3Property), test3Property); + filter.addFilter(0, regexFilter); + FilterContext.set(context1); + assertNull(filter.filterProperty(test1Property)); + FilterContext.set(context2); + assertNull(filter.filterProperty(test2Property)); + FilterContext.set(context3); + assertEquals(filter.filterProperty(test3Property), test3Property); + }finally { + FilterContext.reset(); + } } @Test public void testClearFilters() throws Exception { - FilterContext filter = new FilterContext(); + CompositeFilter filter = new CompositeFilter(); RegexPropertyFilter regexFilter = new RegexPropertyFilter(); regexFilter.setIncludes("test1.*"); Map<String,String> map = new HashMap<>(); map.put("test1", "test1"); map.put("test2", "test2"); map.put("test.test3", "test.test3"); - assertEquals(filter.filterProperty(test1Property, new org.apache.tamaya.spi.FilterContext(test1Property, context)), test1Property); - assertEquals(filter.filterProperty(test2Property, new org.apache.tamaya.spi.FilterContext(test2Property, context)), test2Property); - assertEquals(filter.filterProperty(test3Property, new org.apache.tamaya.spi.FilterContext(test3Property, context)), test3Property); - filter.addFilter(regexFilter); - assertEquals(filter.filterProperty(test1Property, new org.apache.tamaya.spi.FilterContext(test1Property, context)), test1Property); - assertNull(filter.filterProperty(test2Property, new org.apache.tamaya.spi.FilterContext(test2Property, context))); - assertNull(filter.filterProperty(test3Property, new org.apache.tamaya.spi.FilterContext(test3Property, context))); - filter.clearFilters(); - assertEquals(filter.filterProperty(test1Property, new org.apache.tamaya.spi.FilterContext(test1Property, context)), test1Property); - assertEquals(filter.filterProperty(test2Property, new org.apache.tamaya.spi.FilterContext(test2Property, context)), test2Property); - assertEquals(filter.filterProperty(test3Property, new org.apache.tamaya.spi.FilterContext(test3Property, context)), test3Property); + + FilterContext context1 = new FilterContext(test1Property, context); + FilterContext context2 = new FilterContext(test2Property, context); + FilterContext context3 = new FilterContext(test3Property, context); + try{ + FilterContext.set(context1); + assertEquals(filter.filterProperty(test1Property), test1Property); + FilterContext.set(context2); + assertEquals(filter.filterProperty(test2Property), test2Property); + FilterContext.set(context3); + assertEquals(filter.filterProperty(test3Property), test3Property); + filter.addFilter(regexFilter); + FilterContext.set(context1); + assertEquals(filter.filterProperty(test1Property), test1Property); + FilterContext.set(context2); + assertNull(filter.filterProperty(test2Property)); + FilterContext.set(context3); + assertNull(filter.filterProperty(test3Property)); + filter.clearFilters(); + FilterContext.set(context1); + assertEquals(filter.filterProperty(test1Property), test1Property); + FilterContext.set(context2); + assertEquals(filter.filterProperty(test2Property), test2Property); + FilterContext.set(context3); + assertEquals(filter.filterProperty(test3Property), test3Property); + }finally { + FilterContext.reset(); + } } @Test public void testSetFilters() throws Exception { - FilterContext filter = new FilterContext(); + CompositeFilter filter = new CompositeFilter(); RegexPropertyFilter regexFilter = new RegexPropertyFilter(); regexFilter.setIncludes("test\\..*"); Map<String,PropertyValue> map = new HashMap<>(); map.put("test1", test1Property); map.put("test2", test1Property); map.put("test.test3", test3Property); - assertEquals(filter.filterProperty(test1Property, new org.apache.tamaya.spi.FilterContext(test1Property, context)), test1Property); - assertEquals(filter.filterProperty(test2Property, new org.apache.tamaya.spi.FilterContext(test2Property, map, context)), test2Property); - assertEquals(filter.filterProperty(test3Property, new org.apache.tamaya.spi.FilterContext(test3Property, map, context)), test3Property); - filter.setFilters(regexFilter); - assertEquals(filter.filterProperty(test3Property, new org.apache.tamaya.spi.FilterContext(test3Property, map, context)), test3Property); - assertNull(filter.filterProperty(test2Property, new org.apache.tamaya.spi.FilterContext(test2Property, map, context))); - assertNull(filter.filterProperty(test1Property, new org.apache.tamaya.spi.FilterContext(test1Property, map, context))); + + FilterContext context1 = new FilterContext(test1Property, map, context); + FilterContext context2 = new FilterContext(test2Property, map, context); + FilterContext context3 = new FilterContext(test3Property, map, context); + try{ + FilterContext.set(context1); + assertEquals(filter.filterProperty(test1Property), test1Property); + FilterContext.set(context2); + assertEquals(filter.filterProperty(test2Property), test2Property); + FilterContext.set(context3); + assertEquals(filter.filterProperty(test3Property), test3Property); + filter.setFilters(regexFilter); + FilterContext.set(context1); + assertEquals(filter.filterProperty(test3Property), test3Property); + FilterContext.set(context2); + assertNull(filter.filterProperty(test2Property)); + FilterContext.set(context3); + assertNull(filter.filterProperty(test1Property)); + }finally { + FilterContext.reset(); + } } @Test public void testSetFilters1() throws Exception { - FilterContext filter = new FilterContext(); + CompositeFilter filter = new CompositeFilter(); RegexPropertyFilter regexFilter = new RegexPropertyFilter(); regexFilter.setIncludes("test1.*"); - Map<String,String> map = new HashMap<>(); - assertEquals(filter.filterProperty(test1Property, new org.apache.tamaya.spi.FilterContext(test1Property, context)), test1Property); - assertEquals(filter.filterProperty(test2Property, new org.apache.tamaya.spi.FilterContext(test2Property, context)), test2Property); - assertEquals(filter.filterProperty(test3Property, new org.apache.tamaya.spi.FilterContext(test3Property, context)), test3Property); - filter.setFilters(Arrays.asList(new PropertyFilter[]{regexFilter})); - assertEquals(filter.filterProperty(test1Property, new org.apache.tamaya.spi.FilterContext(test1Property, context)), test1Property); - assertNull(filter.filterProperty(test2Property, new org.apache.tamaya.spi.FilterContext(test2Property, context))); - assertNull(filter.filterProperty(test3Property, new org.apache.tamaya.spi.FilterContext(test3Property, context))); + + FilterContext context1 = new FilterContext(test1Property, context); + FilterContext context2 = new FilterContext(test2Property, context); + FilterContext context3 = new FilterContext(test3Property, context); + try { + FilterContext.set(context1); + assertEquals(filter.filterProperty(test1Property), test1Property); + FilterContext.set(context2); + assertEquals(filter.filterProperty(test2Property), test2Property); + FilterContext.set(context3); + assertEquals(filter.filterProperty(test3Property), test3Property); + filter.setFilters(Arrays.asList(new PropertyFilter[]{regexFilter})); + FilterContext.set(context1); + assertEquals(filter.filterProperty(test1Property), test1Property); + FilterContext.set(context2); + assertNull(filter.filterProperty(test2Property)); + FilterContext.set(context3); + assertNull(filter.filterProperty(test3Property)); + }finally { + FilterContext.reset(); + } } @Test public void testGetFilters() throws Exception { - FilterContext filter = new FilterContext(); + CompositeFilter filter = new CompositeFilter(); assertNotNull(filter.getFilters()); assertTrue(filter.getFilters().isEmpty()); RegexPropertyFilter regexFilter = new RegexPropertyFilter(); @@ -135,7 +199,7 @@ public class ProgrammableFilterTest { @Test public void testToString() throws Exception { - FilterContext filter = new FilterContext(); + CompositeFilter filter = new CompositeFilter(); assertFalse(filter.toString().contains("test\\..*")); assertTrue(filter.toString().contains("ProgrammableFilter")); assertFalse(filter.toString().contains("RegexPropertyFilter")); http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ade6eb8b/modules/formats/base/src/main/java/org/apache/tamaya/format/BaseFormatPropertySourceProvider.java ---------------------------------------------------------------------- diff --git a/modules/formats/base/src/main/java/org/apache/tamaya/format/BaseFormatPropertySourceProvider.java b/modules/formats/base/src/main/java/org/apache/tamaya/format/BaseFormatPropertySourceProvider.java index a0f1fdd..0e4c72e 100644 --- a/modules/formats/base/src/main/java/org/apache/tamaya/format/BaseFormatPropertySourceProvider.java +++ b/modules/formats/base/src/main/java/org/apache/tamaya/format/BaseFormatPropertySourceProvider.java @@ -20,6 +20,7 @@ package org.apache.tamaya.format; import org.apache.tamaya.spi.PropertySource; import org.apache.tamaya.spi.PropertySourceProvider; +import org.apache.tamaya.spi.PropertyValue; import java.io.IOException; import java.io.InputStream; @@ -37,7 +38,7 @@ import java.util.logging.Logger; * Implementation of a {@link PropertySourceProvider} that reads configuration from some given resource paths * and using the given formats. The resource path are resolved as classpath resources. This can be changed by * overriding {@link #getPropertySources()}. - * For each resource found the configuration formats passed get a chance to read the resource, if they succeed the + * For each resource found the configuration formats passed getChild a chance to read the resource, if they succeed the * result is taken as the providers PropertySources to be exposed. */ public abstract class BaseFormatPropertySourceProvider implements PropertySourceProvider { @@ -129,8 +130,8 @@ public abstract class BaseFormatPropertySourceProvider implements PropertySource protected abstract Collection<PropertySource> getPropertySources(ConfigurationData data); /** - * This method does dynamically resolve the paths using the current ClassLoader set. If no ClassLoader was - * explcitly set during creation the current Thread context ClassLoader is used. If none of the supported + * This method does dynamically resolve the paths using the current ClassLoader setCurrent. If no ClassLoader was + * explcitly setCurrent during creation the current Thread context ClassLoader is used. If none of the supported * formats is able to parse a resource a WARNING log is written. * * @return the PropertySources successfully read
