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/36c32fcf Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/tree/36c32fcf Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/diff/36c32fcf Branch: refs/heads/master Commit: 36c32fcf347ffffef5498ea177159be0387392e3 Parents: ade6eb8 Author: Anatole Tresch <[email protected]> Authored: Sat Nov 3 01:46:12 2018 +0100 Committer: Anatole Tresch <[email protected]> Committed: Sat Nov 3 01:46:15 2018 +0100 ---------------------------------------------------------------------- .../tamay/ext/examples/resolver/Main.java | 3 +- .../ext/examples/resolver/package-info.java | 2 +- .../events/FilePropertySourceProvider.java | 2 +- .../apache/tamaya/ext/examples/events/Main.java | 7 +- .../tamaya/events/ConfigEventManager.java | 95 +++++++++----- .../tamaya/events/ConfigurationChange.java | 2 +- .../events/ConfigurationChangeBuilder.java | 10 +- .../tamaya/events/FrozenConfiguration.java | 12 +- .../tamaya/events/FrozenPropertySource.java | 2 +- .../tamaya/events/PropertySourceChange.java | 2 +- .../events/PropertySourceChangeBuilder.java | 6 +- .../internal/DefaultConfigChangeObserver.java | 12 +- .../internal/DefaultConfigEventManagerSpi.java | 18 ++- .../events/ChangeableGlobalPropertySource.java | 4 +- .../tamaya/events/ConfigEventManagerTest.java | 16 +-- .../tamaya/events/ConfigurationChangeTest.java | 2 +- .../tamaya/events/FrozenConfigurationTest.java | 2 +- .../tamaya/events/ObservedConfigTest.java | 4 +- .../tamaya/events/PropertySourceChangeTest.java | 2 +- .../apache/tamaya/events/TestConfigView.java | 10 +- .../folderobserver/TestObservingProvider.java | 2 +- .../DefaultConfigChangeObserverTest.java | 13 +- .../org/apache/tamaya/features/Features.java | 2 +- .../apache/tamaya/filter/CompositeFilter.java | 119 ----------------- .../tamaya/filter/ConfigurationFilter.java | 127 ------------------- .../filter/ThreadBasedConfigurationFilter.java | 127 +++++++++++++++++++ .../tamaya/filter/ThreadFilterContext.java | 119 +++++++++++++++++ .../filter/internal/DefaultMetadataFilter.java | 4 +- .../org.apache.tamaya.spi.PropertyFilter | 2 +- .../tamaya/filter/ConfigurationFilterTest.java | 41 +++--- .../tamaya/filter/ProgrammableFilterTest.java | 14 +- modules/formats/base/pom.xml | 4 +- .../BaseFormatPropertySourceProvider.java | 4 +- .../tamaya/format/ConfigurationFormat.java | 7 +- .../tamaya/format/ConfigurationFormats.java | 73 ++++++----- .../MappedConfigurationDataPropertySource.java | 8 +- .../format/formats/IniConfigurationFormat.java | 19 +-- .../tamaya/format/ConfigurationFormatsTest.java | 38 +++--- .../FormatPropertySourceProviderTest.java | 2 +- ...ppedConfigurationDataPropertySourceTest.java | 38 +++--- .../org/apache/tamaya/json/JSONDataBuilder.java | 54 ++++---- .../apache/tamaya/json/JSONPropertySource.java | 3 +- .../org/apache/tamaya/json/JSONVisitorTest.java | 18 +-- .../java/org/apache/tamaya/yaml/YAMLFormat.java | 40 +++--- .../apache/tamaya/yaml/YAMLPropertySource.java | 6 +- .../org/apache/tamaya/yaml/YAMLFormatTest.java | 2 +- modules/functions/pom.xml | 2 +- .../tamaya/functions/CombinedConfiguration.java | 20 +-- .../tamaya/functions/EnrichedConfiguration.java | 6 +- .../tamaya/functions/FilteredConfiguration.java | 12 -- .../tamaya/functions/MappedConfiguration.java | 12 -- .../tamaya/functions/MappedPropertySource.java | 6 +- .../apache/tamaya/functions/PropertyMapper.java | 6 +- .../tamaya/functions/PropertyMatcher.java | 2 +- .../functions/PropertySourceFunctions.java | 63 +++++++-- .../functions/CombinedConfigurationTest.java | 4 +- .../functions/EnrichedConfigurationTest.java | 10 +- .../tamaya/functions/InMemoryConfiguration.java | 4 +- .../tamaya/cdi/CDIAwareServiceContext.java | 49 +++++-- .../tamaya/cdi/ConfigurationProducer.java | 6 +- .../apache/tamaya/cdi/DefaultDynamicValue.java | 30 ++--- .../tamaya/cdi/ServiceLoaderServiceContext.java | 57 +++++++-- .../tamaya/cdi/TamayaCDIInjectionExtension.java | 6 +- .../tamaya/cdi/ConfigurationProducerTest.java | 8 +- .../org/apache/tamaya/inject/api/Config.java | 26 ++-- .../apache/tamaya/inject/api/DynamicValue.java | 74 +++++------ .../apache/tamaya/inject/api/LoadPolicy.java | 2 +- .../apache/tamaya/inject/api/UpdatePolicy.java | 4 +- .../tamaya/inject/spi/BaseDynamicValue.java | 88 +++++++------ .../tamaya/inject/spi/ConfiguredField.java | 6 +- .../tamaya/inject/spi/InjectionUtils.java | 8 +- .../tamaya/inject/spi/BaseDynamicValueTest.java | 21 ++- .../tamaya/inject/ConfigurationInjection.java | 16 ++- .../tamaya/inject/ConfigurationInjector.java | 7 +- .../ConfigTemplateInvocationHandler.java | 2 +- .../inject/internal/ConfiguredFieldImpl.java | 5 +- .../inject/internal/ConfiguredSetterMethod.java | 3 +- .../inject/internal/ConfiguredTypeImpl.java | 4 +- .../internal/DefaultConfigurationInjector.java | 34 ++++- .../inject/internal/DefaultDynamicValue.java | 47 +++---- .../tamaya/inject/internal/InjectionHelper.java | 20 +-- .../apache/tamaya/inject/internal/Utils.java | 6 +- .../tamaya/inject/TamayaInjectionTest.java | 4 +- .../apache/tamaya/jndi/JNDIPropertySource.java | 4 +- .../microprofile/MicroprofileAdapter.java | 10 +- .../microprofile/MicroprofileConfigBuilder.java | 18 ++- .../MicroprofileConfigProviderResolver.java | 1 + .../microprofile/TamayaPropertySource.java | 4 +- .../cdi/MicroprofileConfigurationProducer.java | 4 +- .../converter/ProviderConverter.java | 2 +- .../microprofile/BuildableConfigSource.java | 2 +- .../microprofile/MicroprofileAdapterTest.java | 2 +- .../mutableconfig/ChangePropagationPolicy.java | 6 +- .../mutableconfig/ConfigChangeRequest.java | 10 +- .../mutableconfig/MutableConfiguration.java | 91 ++++++++++++- .../MutableConfigurationProvider.java | 63 ++++++--- .../MutablePropertiesPropertySource.java | 4 +- .../MutableXmlPropertiesPropertySource.java | 4 +- .../spi/MutableConfigurationProviderSpi.java | 2 +- .../MutableConfigurationProviderTest.java | 8 +- .../mutableconfig/MutableConfigurationTest.java | 58 +++++++-- modules/optional/pom.xml | 2 +- .../tamaya/optional/EvaluationPolicy.java | 4 +- .../tamaya/optional/OptionalConfiguration.java | 36 +++--- .../apache/tamaya/optional/ValueProvider.java | 6 +- .../org/apache/tamaya/osgi/ConfigHistory.java | 10 +- .../apache/tamaya/osgi/TamayaConfigPlugin.java | 6 +- .../tamaya/gogo/shell/ConfigCommands.java | 2 +- .../osgi/injection/TamayaOSGIInjector.java | 2 +- .../karaf/shell/DefaultEnableCommand.java | 2 +- .../tamaya/karaf/shell/PropertyGetCommand.java | 2 +- .../karaf/shell/PropertySourcesCommand.java | 2 +- .../apache/tamaya/osgi/updater/Activator.java | 8 +- .../tamaya/osgi/updater/ActivatorTest.java | 6 +- modules/resolver/pom.xml | 2 +- .../org/apache/tamaya/resolver/Resolver.java | 98 +++++++------- .../resolver/internal/ConfigResolver.java | 2 +- .../internal/DefaultExpressionEvaluator.java | 8 +- .../internal/ExpressionResolutionFilter.java | 4 +- .../resolver/internal/ResourceResolver.java | 7 +- .../resolver/spi/ExpressionEvaluator.java | 6 +- .../tamaya/resolver/ConfigResolutionTest.java | 1 - .../tamaya/resolver/MyTestPropertySource.java | 6 +- .../apache/tamaya/resolver/ResolverTest.java | 15 +-- modules/resources/pom.xml | 2 +- .../AbstractPathPropertySourceProvider.java | 6 +- .../tamaya/resource/BaseResourceResolver.java | 20 ++- .../apache/tamaya/resource/ConfigResources.java | 9 +- .../apache/tamaya/resource/ResourceLocator.java | 2 +- .../tamaya/resource/ResourceResolver.java | 62 +++++---- .../resource/internal/ClasspathCollector.java | 6 +- .../internal/DefaultResourceResolver.java | 22 +++- .../tamaya/resource/internal/FileCollector.java | 8 +- .../tamaya/resource/internal/VfsSupport.java | 16 +-- .../AbstractPathPropertySourceProviderTest.java | 6 +- .../spring/TamayaSpringPropertySource.java | 1 - 136 files changed, 1406 insertions(+), 1063 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/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 b9bba45..1cd9094 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 @@ -19,7 +19,6 @@ package org.apache.tamay.ext.examples.resolver; import org.apache.tamaya.Configuration; -import org.apache.tamaya.ConfigurationProvider; import java.io.PrintStream; import java.util.Map; @@ -30,7 +29,7 @@ import java.util.logging.Logger; import static java.lang.String.format; /** - * Example illustrating the usage of value resolver expressions (placeholders). + * Example illustrating the usage of createValue resolver expressions (placeholders). */ public class Main { /* http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/examples/02-resolver-example/src/main/java/org/apache/tamay/ext/examples/resolver/package-info.java ---------------------------------------------------------------------- diff --git a/examples/02-resolver-example/src/main/java/org/apache/tamay/ext/examples/resolver/package-info.java b/examples/02-resolver-example/src/main/java/org/apache/tamay/ext/examples/resolver/package-info.java index 9479876..2f0cc42 100644 --- a/examples/02-resolver-example/src/main/java/org/apache/tamay/ext/examples/resolver/package-info.java +++ b/examples/02-resolver-example/src/main/java/org/apache/tamay/ext/examples/resolver/package-info.java @@ -18,6 +18,6 @@ */ /** - * Example illustrating the usage of value resolver expressions (placeholders). + * Example illustrating the usage of createValue resolver expressions (placeholders). */ package org.apache.tamay.ext.examples.resolver; \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/examples/04-events-example/src/main/java/org/apache/tamaya/ext/examples/events/FilePropertySourceProvider.java ---------------------------------------------------------------------- diff --git a/examples/04-events-example/src/main/java/org/apache/tamaya/ext/examples/events/FilePropertySourceProvider.java b/examples/04-events-example/src/main/java/org/apache/tamaya/ext/examples/events/FilePropertySourceProvider.java index a15ad6e..670e916 100644 --- a/examples/04-events-example/src/main/java/org/apache/tamaya/ext/examples/events/FilePropertySourceProvider.java +++ b/examples/04-events-example/src/main/java/org/apache/tamaya/ext/examples/events/FilePropertySourceProvider.java @@ -60,7 +60,7 @@ public class FilePropertySourceProvider extends AbstractPathPropertySourceProvid } for (String key : props.stringPropertyNames()) { - properties.put(key, PropertyValue.of(key, props.getProperty(key), getName())); + properties.put(key, PropertyValue.createValue(key, props.getProperty(key)).setMeta("source", getName())); } } catch (IOException e) { throw new ConfigException("Error loading properties from " + propertiesFile, e); http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/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 2cf3fa0..f6019f9 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 @@ -19,7 +19,6 @@ package org.apache.tamaya.ext.examples.events; import org.apache.tamaya.Configuration; -import org.apache.tamaya.ConfigurationProvider; import org.apache.tamaya.events.ConfigEvent; import org.apache.tamaya.events.ConfigEventListener; import org.apache.tamaya.events.ConfigEventManager; @@ -61,9 +60,9 @@ public class Main { installCleanupHook(getPropertiesFilePath()); - ConfigEventManager.addListener(new ConfigurationChangeListener()); - ConfigEventManager.setChangeMonitoringPeriod(1_000L); - ConfigEventManager.enableChangeMonitoring(true); + ConfigEventManager.getInstance().addListener(new ConfigurationChangeListener()); + ConfigEventManager.getInstance().setChangeMonitoringPeriod(1_000L); + ConfigEventManager.getInstance().enableChangeMonitoring(true); Configuration configuration = Configuration.current(); for (Map.Entry<String, String> e : configuration.getProperties().entrySet()) { http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/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 1830dfb..636fbb8 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 @@ -23,6 +23,7 @@ import org.apache.tamaya.events.spi.ConfigEventManagerSpi; import org.apache.tamaya.spi.ServiceContextManager; import java.util.Collection; +import java.util.Objects; /** * Singleton accessor for accessing the event support component that distributes change events of @@ -30,32 +31,53 @@ import java.util.Collection; */ @SuppressWarnings("rawtypes") public final class ConfigEventManager { + + private ClassLoader classLoader; + + private ConfigEventManager(ClassLoader classLoader){ + this.classLoader = Objects.requireNonNull(classLoader); + } + /** * The backing SPI. */ - private static final ConfigEventManagerSpi spi(){ - ConfigEventManagerSpi spi = ServiceContextManager.getServiceContext( - Thread.currentThread().getContextClassLoader()) + private static final ConfigEventManagerSpi spi(ClassLoader classLoader){ + ConfigEventManagerSpi spi = ServiceContextManager.getServiceContext(classLoader) .getService(ConfigEventManagerSpi.class); if(spi==null){ - throw new ConfigException("No SPI registered for " + - ConfigEventManager.class.getName()); + throw new ConfigException("No SPI registered: " + + ConfigEventManagerSpi.class.getName()); } return spi; } /** - * Private singleton constructor. + * Access the event manager using the current classloader. + * + * @see ServiceContextManager#getDefaultClassLoader() + * @return the event manager, not null. + */ + public static ConfigEventManager getInstance(){ + return getInstance(ServiceContextManager.getDefaultClassLoader()); + } + + /** + * Access the event manager using the given classloader. + * @param classLoader the target classloader, not null. + * @return the event manager, not null. */ - private ConfigEventManager() { + public static ConfigEventManager getInstance(ClassLoader classLoader){ + return ServiceContextManager.getServiceContext( + Thread.currentThread().getContextClassLoader()).getService( + ConfigEventManager.class, () -> new ConfigEventManager(classLoader)); } /** * Adds a Config listener that listens to all kind of {@link ConfigEvent}. * @param l the listener not null. */ - public static void addListener(ConfigEventListener l) { - spi().addListener(l); + public void addListener(ConfigEventListener l) { + spi(classLoader).addListener(l); } /** @@ -64,8 +86,8 @@ public final class ConfigEventManager { * @param l the listener not null. * @param eventType the event type to which this listener listens to. */ - public static <T extends ConfigEvent> void addListener(ConfigEventListener l, Class<T> eventType) { - spi().addListener(l); + public <T extends ConfigEvent> void addListener(ConfigEventListener l, Class<T> eventType) { + spi(classLoader).addListener(l); } /** @@ -73,8 +95,8 @@ public final class ConfigEventManager { * * @param l the listener not null. */ - public static void removeListener(ConfigEventListener l) { - spi().removeListener(l); + public void removeListener(ConfigEventListener l) { + spi(classLoader).removeListener(l); } /** @@ -84,30 +106,30 @@ public final class ConfigEventManager { * @param l the listener, not null. * @param eventType the event type to which this listener listens to. */ - public static <T extends ConfigEvent> void removeListener(ConfigEventListener l, Class<T> eventType) { - spi().removeListener(l); + public <T extends ConfigEvent> void removeListener(ConfigEventListener l, Class<T> eventType) { + spi(classLoader).removeListener(l); } /** * Access all registered ConfigEventListeners listening to a given event type. * @param type the event type * @param <T> type param - * @return a list with the listeners found, never null. + * @return a createList with the listeners found, never null. */ - public static <T extends ConfigEvent> + public <T extends ConfigEvent> Collection<? extends ConfigEventListener> getListeners(Class<T> type) { - return spi().getListeners(type); + return spi(classLoader).getListeners(type); } /** * Access all registered ConfigEventListeners listening to a all kind of event types globally. * * @param <T> the type of the event. - * @return a list with the listeners found, never null. + * @return a createList with the listeners found, never null. */ - public static <T extends ConfigEvent> + public <T extends ConfigEvent> Collection<? extends ConfigEventListener> getListeners() { - return spi().getListeners(); + return spi(classLoader).getListeners(); } /** @@ -116,8 +138,8 @@ public final class ConfigEventManager { * @param <T> the type of the event. * @param event the event, not null. */ - public static <T> void fireEvent(ConfigEvent<?> event) { - spi().fireEvent(event); + public <T> void fireEvent(ConfigEvent<?> event) { + spi(classLoader).fireEvent(event); } /** @@ -126,8 +148,8 @@ public final class ConfigEventManager { * @param <T> the type of the event. * @param event the event, not null. */ - public static <T> void fireEventAsynch(ConfigEvent<?> event) { - spi().fireEventAsynch(event); + public <T> void fireEventAsynch(ConfigEvent<?> event) { + spi(classLoader).fireEventAsynch(event); } /** @@ -142,8 +164,8 @@ public final class ConfigEventManager { * @see #isChangeMonitoring() * @see #getChangeMonitoringPeriod() */ - public static void enableChangeMonitoring(boolean enable) { - spi().enableChangeMonitor(enable); + public void enableChangeMonitoring(boolean enable) { + spi(classLoader).enableChangeMonitor(enable); } /** @@ -152,8 +174,8 @@ public final class ConfigEventManager { * @return true, if the change monitoring service is currently running. * @see #enableChangeMonitoring(boolean) */ - public static boolean isChangeMonitoring() { - return spi().isChangeMonitorActive(); + public boolean isChangeMonitoring() { + return spi(classLoader).isChangeMonitorActive(); } /** @@ -161,8 +183,8 @@ public final class ConfigEventManager { * * @return the check period in ms. */ - public static long getChangeMonitoringPeriod(){ - return spi().getChangeMonitoringPeriod(); + public long getChangeMonitoringPeriod(){ + return spi(classLoader).getChangeMonitoringPeriod(); } /** @@ -172,8 +194,15 @@ public final class ConfigEventManager { * @see #enableChangeMonitoring(boolean) * @see #isChangeMonitoring() */ - public static void setChangeMonitoringPeriod(long millis){ - spi().setChangeMonitoringPeriod(millis); + public void setChangeMonitoringPeriod(long millis){ + spi(classLoader).setChangeMonitoringPeriod(millis); } + /** + * Get the underlying target classloader. + * @return the classloader, not null. + */ + public ClassLoader getClassLoader() { + return this.classLoader; + } } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/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 5b75b61..0ec7e1e 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 @@ -30,7 +30,7 @@ import java.util.UUID; /** * 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 + * This class is immutable and thread-safe. To createObject instances use * {@link PropertySourceChangeBuilder}. * * Created by Anatole on 22.10.2014. http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/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 79061ba..6546338 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 @@ -36,7 +36,7 @@ import java.util.TreeMap; * contains the changed {@link org.apache.tamaya.spi.PropertySource} (Note: the reference to a property source is never affected by a * change, its only the data of the property source).</li> * <li>If so corresponding actions might be taken, such as reevaluating the configuration values (depending on - * the update policy) or reevaluating the complete {@link org.apache.tamaya.Configuration} to create a change + * the update policy) or reevaluating the complete {@link org.apache.tamaya.Configuration} to createObject a change * event on configuration level. * </ol> */ @@ -161,10 +161,10 @@ public final class ConfigurationChangeBuilder { } /** - * Applies a single key/value change. + * Applies a single key/createValue change. * * @param key the changed key - * @param value the new value. + * @param value the new createValue. * @return this instance for chaining. */ public ConfigurationChangeBuilder addChange(String key, String value) { @@ -215,7 +215,7 @@ public final class ConfigurationChangeBuilder { * <ul> * <li>the registered codecs provider provides codecs for the corresponding keys, or </li> * <li>default codecs are present for the given type, or</li> - * <li>the value is an instanceof String</li> + * <li>the createValue is an instanceof String</li> * </ul> * * @param changes the changes to be applied, not null. @@ -229,7 +229,7 @@ public final class ConfigurationChangeBuilder { } /** - * This method will create a change setCurrent that clears all entries fromMap the given base configuration/properties. + * This method will createObject a change setCurrent that clears all entries fromMap the given base configuration/properties. * * @return the builder for chaining. */ http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/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 2707200..45375ec 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 @@ -36,7 +36,7 @@ import java.util.logging.Logger; /** * /** * Configuration implementation that stores all current values of a given (possibly dynamic, contextual and non server - * capable instance) and is fully serializable. Note that hereby only the scannable key/value pairs are considered. + * capable instance) and is fully serializable. Note that hereby only the scannable key/createValue pairs are considered. */ public final class FrozenConfiguration implements Configuration, Serializable { private static final long serialVersionUID = -6373137316556444171L; @@ -101,15 +101,15 @@ public final class FrozenConfiguration implements Configuration, Serializable { } /** - * Accesses the current String value for the given key and tries to convert it + * Accesses the current String createValue for the given key and tries to convert it * using the {@link org.apache.tamaya.spi.PropertyConverter} instances provided by the current * {@link org.apache.tamaya.spi.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. + * @param <T> the createValue type + * @return the converted createValue, never null. */ @Override public <T> T get(String key, TypeLiteral<T> type) { @@ -128,11 +128,11 @@ public final class FrozenConfiguration implements Configuration, Serializable { } } catch (Exception e) { Logger.getLogger(getClass().getName()) - .log(Level.FINEST, "PropertyConverter: " + converter + " failed to convert value: " + value, + .log(Level.FINEST, "PropertyConverter: " + converter + " failed to convert createValue: " + value, e); } } - throw new ConfigException("Unparseable config value for type: " + type.getRawType().getName() + ": " + key + throw new ConfigException("Unparseable config createValue for type: " + type.getRawType().getName() + ": " + key + ", supported formats: " + context.getSupportedFormats()); }finally{ ConversionContext.reset(); http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/events/src/main/java/org/apache/tamaya/events/FrozenPropertySource.java ---------------------------------------------------------------------- diff --git a/modules/events/src/main/java/org/apache/tamaya/events/FrozenPropertySource.java b/modules/events/src/main/java/org/apache/tamaya/events/FrozenPropertySource.java index 0bc71ce..65da582 100644 --- a/modules/events/src/main/java/org/apache/tamaya/events/FrozenPropertySource.java +++ b/modules/events/src/main/java/org/apache/tamaya/events/FrozenPropertySource.java @@ -29,7 +29,7 @@ import java.util.Map; /** * PropertySource implementation that stores all current values of a given (possibly dynamic, contextual and non server - * capable instance) and is fully serializable. Note that hereby only the scannable key/value pairs are considered. + * capable instance) and is fully serializable. Note that hereby only the scannable key/createValue pairs are considered. */ public final class FrozenPropertySource implements PropertySource, Serializable { private static final long serialVersionUID = -6373137316556444171L; http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/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 d7e73b8..d256713 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 @@ -30,7 +30,7 @@ import java.util.UUID; /** * 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 + * This class is immutable and thread-safe. To createObject instances use * {@link PropertySourceChangeBuilder}. * * Created by Anatole on 22.10.2014. http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/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 51da86d..cd77515 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 @@ -38,7 +38,7 @@ import java.util.TreeMap; * contains the changed {@link org.apache.tamaya.spi.PropertySource} (Note: the reference tova property source is never affected by a * change, its only the data of the property source).</li> * <li>If so corresponding action may be taken, such as reevaluating the configuration values (depending on - * the update policy) or reevaluating the complete {@link org.apache.tamaya.Configuration} to create a change + * the update policy) or reevaluating the complete {@link org.apache.tamaya.Configuration} to createObject a change * event on configuration level. * </ol> */ @@ -186,7 +186,7 @@ public final class PropertySourceChangeBuilder { * <ul> * <li>the registered codecs provider provides codecs for the corresponding keys, or </li> * <li>default codecs are present for the given type, or</li> - * <li>the value is an instanceof String</li> + * <li>the createValue is an instanceof String</li> * </ul> * * @param changes the changes to be applied, not null. @@ -200,7 +200,7 @@ public final class PropertySourceChangeBuilder { } /** - * This method will create a change setCurrent that clears all entries fromMap the given base configuration/properties. + * This method will createObject a change setCurrent that clears all entries fromMap the given base configuration/properties. * * @return the builder for chaining. */ http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/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 c806446..ebfa356 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 @@ -19,7 +19,6 @@ 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; import org.apache.tamaya.events.ConfigurationChangeBuilder; @@ -45,10 +44,13 @@ public class DefaultConfigChangeObserver { private volatile boolean running; + private ClassLoader classLoader; + /** * Constructor. Also loads all registered listeners. */ - public DefaultConfigChangeObserver() { + public DefaultConfigChangeObserver(ClassLoader classLoader) { + this.classLoader = Objects.requireNonNull(classLoader); LOG.info("Registering config change observer, rechecking config changes every " + checkPeriod + " ms."); timer.scheduleAtFixedRate(new TimerTask() { @Override @@ -62,7 +64,7 @@ public class DefaultConfigChangeObserver { public void checkConfigurationUpdate() { LOG.finest("Checking configuration for changes..."); - FrozenConfiguration frozenConfig = FrozenConfiguration.of(Configuration.current()); + FrozenConfiguration frozenConfig = FrozenConfiguration.of(Configuration.current(classLoader)); ConfigurationChange changes; if (getLastConfig() != null) { @@ -70,12 +72,10 @@ public class DefaultConfigChangeObserver { .build(); if(!changes.isEmpty()) { LOG.info("Identified configuration changes, publishing changes:\n" + changes); - ConfigEventManager.fireEvent(changes); + ConfigEventManager.getInstance(classLoader).fireEvent(changes); } } setLastConfig(frozenConfig); - - } protected FrozenConfiguration getLastConfig() { http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/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 a0d58bd..cbe8937 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 @@ -21,6 +21,7 @@ package org.apache.tamaya.events.internal; import org.apache.tamaya.events.ConfigEvent; import org.apache.tamaya.events.ConfigEventListener; import org.apache.tamaya.events.spi.ConfigEventManagerSpi; +import org.apache.tamaya.spi.ClassloaderAware; import org.apache.tamaya.spi.ServiceContextManager; import org.osgi.service.component.annotations.Component; @@ -37,7 +38,7 @@ import java.util.logging.Logger; */ @SuppressWarnings("rawtypes") @Component -public class DefaultConfigEventManagerSpi implements ConfigEventManagerSpi { +public class DefaultConfigEventManagerSpi implements ConfigEventManagerSpi, ClassloaderAware { private static final Logger LOG = Logger.getLogger(DefaultConfigEventManagerSpi.class.getName()); @@ -45,7 +46,9 @@ public class DefaultConfigEventManagerSpi implements ConfigEventManagerSpi { private final ExecutorService publisher = Executors.newCachedThreadPool(); - private final DefaultConfigChangeObserver changeObserver = new DefaultConfigChangeObserver(); + private ClassLoader classLoader; + + private DefaultConfigChangeObserver changeObserver; /** * Constructor. Also loads all registered listeners. @@ -185,6 +188,17 @@ public class DefaultConfigEventManagerSpi implements ConfigEventManagerSpi { changeObserver.enableMonitoring(enable); } + @Override + public void init(ClassLoader classLoader) { + this.classLoader = Objects.requireNonNull(classLoader); + changeObserver = new DefaultConfigChangeObserver(classLoader); + } + + @Override + public ClassLoader getClassLoader() { + return classLoader; + } + /** * Tasks to inform observers on detected configuration changes. http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/events/src/test/java/org/apache/tamaya/events/ChangeableGlobalPropertySource.java ---------------------------------------------------------------------- diff --git a/modules/events/src/test/java/org/apache/tamaya/events/ChangeableGlobalPropertySource.java b/modules/events/src/test/java/org/apache/tamaya/events/ChangeableGlobalPropertySource.java index 94a0a9d..1f7dd7c 100644 --- a/modules/events/src/test/java/org/apache/tamaya/events/ChangeableGlobalPropertySource.java +++ b/modules/events/src/test/java/org/apache/tamaya/events/ChangeableGlobalPropertySource.java @@ -42,9 +42,9 @@ public class ChangeableGlobalPropertySource extends BasePropertySource{ } /** - * Put a value (globally) into this property source. + * Put a createValue (globally) into this property source. * @param key the key, not null - * @param value the value, not null + * @param value the createValue, not null * @return the entry replaced, or null. */ public static String put(String key, String value){ http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/events/src/test/java/org/apache/tamaya/events/ConfigEventManagerTest.java ---------------------------------------------------------------------- diff --git a/modules/events/src/test/java/org/apache/tamaya/events/ConfigEventManagerTest.java b/modules/events/src/test/java/org/apache/tamaya/events/ConfigEventManagerTest.java index 1e658af..8435df8 100644 --- a/modules/events/src/test/java/org/apache/tamaya/events/ConfigEventManagerTest.java +++ b/modules/events/src/test/java/org/apache/tamaya/events/ConfigEventManagerTest.java @@ -37,11 +37,11 @@ public class ConfigEventManagerTest { testAddListenerValue = event.getResource(); } }; - ConfigEventManager.addListener(testListener); - ConfigEventManager.fireEvent(new SimpleEvent("Event1")); + ConfigEventManager.getInstance().addListener(testListener); + ConfigEventManager.getInstance().fireEvent(new SimpleEvent("Event1")); assertEquals(testAddListenerValue, "Event1"); - ConfigEventManager.removeListener(testListener); - ConfigEventManager.fireEvent(new SimpleEvent("Event2")); + ConfigEventManager.getInstance().removeListener(testListener); + ConfigEventManager.getInstance().fireEvent(new SimpleEvent("Event2")); assertEquals(testAddListenerValue, "Event1"); } @@ -53,11 +53,11 @@ public class ConfigEventManagerTest { testAddListenerValue = event.getResource(); } }; - ConfigEventManager.addListener(testListener); - ConfigEventManager.fireEvent(new SimpleEvent("Event1")); + ConfigEventManager.getInstance().addListener(testListener); + ConfigEventManager.getInstance().fireEvent(new SimpleEvent("Event1")); assertEquals(testAddListenerValue, "Event1"); - ConfigEventManager.removeListener(testListener); - ConfigEventManager.fireEvent(new SimpleEvent("Event2")); + ConfigEventManager.getInstance().removeListener(testListener); + ConfigEventManager.getInstance().fireEvent(new SimpleEvent("Event2")); assertEquals(testAddListenerValue, "Event1"); } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/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 b90b0a9..fd7fb0b 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 @@ -49,7 +49,7 @@ public class ConfigurationChangeTest { assertTrue(change.getChanges().size()==0); for (Map.Entry<String, String> en : config.getProperties().entrySet()) { if (!"[getMeta]frozenAt".equals(en.getKey())) { - if(en.getKey().contains("random.new")){ // dynamic generated value! + if(en.getKey().contains("random.new")){ // dynamic generated createValue! continue; } assertEquals("Error for " + en.getKey(), en.getValue(), change.getResource().get(en.getKey())); http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/events/src/test/java/org/apache/tamaya/events/FrozenConfigurationTest.java ---------------------------------------------------------------------- diff --git a/modules/events/src/test/java/org/apache/tamaya/events/FrozenConfigurationTest.java b/modules/events/src/test/java/org/apache/tamaya/events/FrozenConfigurationTest.java index 264d99a..3ad8f12 100644 --- a/modules/events/src/test/java/org/apache/tamaya/events/FrozenConfigurationTest.java +++ b/modules/events/src/test/java/org/apache/tamaya/events/FrozenConfigurationTest.java @@ -60,7 +60,7 @@ public class FrozenConfigurationTest { @Test public void twoFrozenAreDifferentIfTheyHaveADifferentIdAndFrozenAtTimestamp() { Map<String, String> properties = new HashMap<>(); - properties.put("key", "value"); + properties.put("key", "createValue"); Configuration configuration = Mockito.mock(Configuration.class); doReturn(properties).when(configuration).getProperties(); http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/events/src/test/java/org/apache/tamaya/events/ObservedConfigTest.java ---------------------------------------------------------------------- diff --git a/modules/events/src/test/java/org/apache/tamaya/events/ObservedConfigTest.java b/modules/events/src/test/java/org/apache/tamaya/events/ObservedConfigTest.java index da749c3..1661ab5 100644 --- a/modules/events/src/test/java/org/apache/tamaya/events/ObservedConfigTest.java +++ b/modules/events/src/test/java/org/apache/tamaya/events/ObservedConfigTest.java @@ -30,8 +30,8 @@ public class ObservedConfigTest { @Test public void testChangingConfig() throws IOException { - ConfigEventManager.setChangeMonitoringPeriod(100L); - ConfigEventManager.enableChangeMonitoring(true); + ConfigEventManager.getInstance().setChangeMonitoringPeriod(100L); + ConfigEventManager.getInstance().enableChangeMonitoring(true); while(MyConfigObserver.event==null) { try { Thread.sleep(100); http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/events/src/test/java/org/apache/tamaya/events/PropertySourceChangeTest.java ---------------------------------------------------------------------- diff --git a/modules/events/src/test/java/org/apache/tamaya/events/PropertySourceChangeTest.java b/modules/events/src/test/java/org/apache/tamaya/events/PropertySourceChangeTest.java index 2fd51c5..f04f510 100644 --- a/modules/events/src/test/java/org/apache/tamaya/events/PropertySourceChangeTest.java +++ b/modules/events/src/test/java/org/apache/tamaya/events/PropertySourceChangeTest.java @@ -106,7 +106,7 @@ public class PropertySourceChangeTest { @Test public void testGetUpdatedSizeWithUpdates() throws Exception { Map<String, String> addableMap = new HashMap<>(); - addableMap.put("java.home", "/new/java/home/value"); + addableMap.put("java.home", "/new/java/home/createValue"); PropertySourceChange change = PropertySourceChangeBuilder.of(myPS) .addChanges( http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/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 2ec7c1b..d12c5d6 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 @@ -107,15 +107,15 @@ public class TestConfigView implements ConfigOperator{ } /** - * Accesses the current String value for the given key and tries to convert it + * Accesses the current String createValue for the given key and tries to convert it * using the {@link org.apache.tamaya.spi.PropertyConverter} instances provided by the current * {@link org.apache.tamaya.spi.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. + * @param <T> the createValue type + * @return the converted createValue, never null. */ @Override public <T> T get(String key, TypeLiteral<T> type) { @@ -135,11 +135,11 @@ public class TestConfigView implements ConfigOperator{ } } catch (Exception e) { Logger.getLogger(getClass().getName()) - .log(Level.FINEST, "PropertyConverter: " + converter + " failed to convert value: " + .log(Level.FINEST, "PropertyConverter: " + converter + " failed to convert createValue: " + value, e); } } - throw new ConfigException("Unparseable config value for type: " + type.getRawType().getName() + ": " + throw new ConfigException("Unparseable config createValue for type: " + type.getRawType().getName() + ": " + key + ", supportedFormats: " + context.getSupportedFormats()); }finally{ ConversionContext.reset(); http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/events/src/test/java/org/apache/tamaya/events/folderobserver/TestObservingProvider.java ---------------------------------------------------------------------- diff --git a/modules/events/src/test/java/org/apache/tamaya/events/folderobserver/TestObservingProvider.java b/modules/events/src/test/java/org/apache/tamaya/events/folderobserver/TestObservingProvider.java index b1e3962..93345a9 100644 --- a/modules/events/src/test/java/org/apache/tamaya/events/folderobserver/TestObservingProvider.java +++ b/modules/events/src/test/java/org/apache/tamaya/events/folderobserver/TestObservingProvider.java @@ -36,7 +36,7 @@ public class TestObservingProvider extends ObservingPropertySourceProvider{ static{ try { - // create some temporary config + // createObject some temporary config Path tempDir = Files.createTempDirectory("observedFolder"); TestObservingProvider.propertyLocation = tempDir; http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/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 4bceacc..4aab1b8 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 @@ -19,12 +19,15 @@ package org.apache.tamaya.events.internal; import org.apache.tamaya.events.FrozenConfiguration; +import org.apache.tamaya.spi.ServiceContextManager; import org.junit.Test; import static org.assertj.core.api.Assertions.assertThat; public class DefaultConfigChangeObserverTest { - private DefaultConfigChangeObserver sut = new DefaultConfigChangeObserver(); + private DefaultConfigChangeObserver sut = new DefaultConfigChangeObserver( + ServiceContextManager.getDefaultClassLoader() + ); @Test public void enableMonitoringCalledWithTrueEnablesMonitoring() { @@ -50,7 +53,9 @@ public class DefaultConfigChangeObserverTest { @Test public void lastConfigIsSetByTheFirstCheckForChangesInTheConfiguration() { - DefaultConfigChangeObserver observer = new DefaultConfigChangeObserver(); + DefaultConfigChangeObserver observer = new DefaultConfigChangeObserver( + ServiceContextManager.getDefaultClassLoader() + ); assertThat(observer.getLastConfig()).describedAs("There must be no last configuration after creation.") .isNull(); @@ -63,7 +68,9 @@ public class DefaultConfigChangeObserverTest { @Test public void lastConfigIsUpdatedByASubSequentCheckForChangesInTheConfigration() { - DefaultConfigChangeObserver observer = new DefaultConfigChangeObserver(); + DefaultConfigChangeObserver observer = new DefaultConfigChangeObserver( + ServiceContextManager.getDefaultClassLoader() + ); observer.checkConfigurationUpdate(); http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/features/src/main/java/org/apache/tamaya/features/Features.java ---------------------------------------------------------------------- diff --git a/modules/features/src/main/java/org/apache/tamaya/features/Features.java b/modules/features/src/main/java/org/apache/tamaya/features/Features.java index fffdf8b..9db355c 100644 --- a/modules/features/src/main/java/org/apache/tamaya/features/Features.java +++ b/modules/features/src/main/java/org/apache/tamaya/features/Features.java @@ -114,7 +114,7 @@ public final class Features { * @return true, if <i>tamaya-filter</i> is on the classpath. */ public static boolean filterSupportAvailable() { - return checkClassIsLoadable("org.apache.tamaya.filter.ConfigurationFilter"); + return checkClassIsLoadable("org.apache.tamaya.filter.ThreadFilterContext"); } /** http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/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 deleted file mode 100644 index 0189648..0000000 --- a/modules/filter/src/main/java/org/apache/tamaya/filter/CompositeFilter.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 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/36c32fcf/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 deleted file mode 100644 index 54b0af0..0000000 --- a/modules/filter/src/main/java/org/apache/tamaya/filter/ConfigurationFilter.java +++ /dev/null @@ -1,127 +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 org.osgi.service.component.annotations.Component; -import org.apache.tamaya.spi.FilterContext; - -/** - * Hereby - * <ul> - * <li><b>Single</b> filters are applied only when values are explicitly accessed. This is useful, e.g. for - * filtering passwords into clear text variants. Nevertheless metadata keys hidden on map level must be - * accessible (=not filtered) when accessed as single values.</li> - * <li><b>Map</b> filters are applied when values are filtered as part of a full properties access. - * Often filtering in these cases is more commonly applied, e.g. you dont want to show up all kind of metadata. - * </li> - * </ul> - * For both variants individual filter rules can be applied here. All filters configured are managed on a - * thread-local level, so this class is typically used to temporarely filter out some values. Do not forget to - * restore its state, when not using a thread anymore (especially important in multi-threaded environments), not - * doing so will create nasty side effects of configuration not being visisble depending on the thread - * active. - */ -@Component -public final class ConfigurationFilter implements PropertyFilter{ - - static final ThreadLocal<Boolean> THREADED_METADATA_FILTERED = new ThreadLocal<Boolean>(){ - @Override - protected Boolean initialValue() { - return Boolean.TRUE; - } - }; - - private static final ThreadLocal<CompositeFilter> THREADED_MAP_FILTERS = new ThreadLocal<CompositeFilter>(){ - @Override - protected CompositeFilter initialValue() { - return new CompositeFilter(); - } - }; - - private static final ThreadLocal<CompositeFilter> THREADED_VALUE_FILTERS = new ThreadLocal<CompositeFilter>(){ - @Override - protected CompositeFilter initialValue() { - return new CompositeFilter(); - } - }; - - /** - * Flag if metadata entries (starting with an '_') are filtered out on when accessing multiple properties, default - * is {@code true}. - * @return true, if metadata entries (starting with an '_') are to be filtered. - */ - public static boolean isMetadataFiltered(){ - return THREADED_METADATA_FILTERED.get(); - } - - /** - * Seactivates metadata filtering also on global map access for this thread. - * @see #cleanupFilterContext() - * @param filtered true,to enable metadata filtering (default). - */ - public static void setMetadataFiltered(boolean filtered){ - THREADED_METADATA_FILTERED.set(filtered); - } - - /** - * Access the filtering configuration that is used on the current thread for - * filtering single property values accessed. - * - * @return the filtering config, never null. - */ - public static CompositeFilter getSingleValueFilterContext(){ - return THREADED_VALUE_FILTERS.get(); - } - - /** - * Access the filtering configuration that is used used on the current thread - * for filtering configuration properties accessed as full - * map. - * @return the filtering config, never null. - */ - public static CompositeFilter getMapFilterContext(){ - return THREADED_MAP_FILTERS.get(); - } - - /** - * Removes all programmable filters active on the current thread. - */ - public static void cleanupFilterContext(){ - THREADED_MAP_FILTERS.get().clearFilters(); - THREADED_VALUE_FILTERS.get().clearFilters(); - THREADED_METADATA_FILTERED.set(true); - } - - @Override - 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); - } - }else{ - for(PropertyFilter pred: THREADED_MAP_FILTERS.get().getFilters()){ - valueToBeFiltered = pred.filterProperty(valueToBeFiltered); - } - } - return valueToBeFiltered; - } -} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/filter/src/main/java/org/apache/tamaya/filter/ThreadBasedConfigurationFilter.java ---------------------------------------------------------------------- diff --git a/modules/filter/src/main/java/org/apache/tamaya/filter/ThreadBasedConfigurationFilter.java b/modules/filter/src/main/java/org/apache/tamaya/filter/ThreadBasedConfigurationFilter.java new file mode 100644 index 0000000..1ba2962 --- /dev/null +++ b/modules/filter/src/main/java/org/apache/tamaya/filter/ThreadBasedConfigurationFilter.java @@ -0,0 +1,127 @@ +/* + * 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 org.osgi.service.component.annotations.Component; +import org.apache.tamaya.spi.FilterContext; + +/** + * Hereby + * <ul> + * <li><b>Single</b> filters are applied only when values are explicitly accessed. This is useful, e.g. for + * filtering passwords into clear text variants. Nevertheless metadata keys hidden on map level must be + * accessible (=not filtered) when accessed as single values.</li> + * <li><b>Map</b> filters are applied when values are filtered as part of a full properties access. + * Often filtering in these cases is more commonly applied, e.g. you dont want to show up all kind of metadata. + * </li> + * </ul> + * For both variants individual filter rules can be applied here. All filters configured are managed on a + * thread-local level, so this class is typically used to temporarely filter out some values. Do not forget to + * restore its state, when not using a thread anymore (especially important in multi-threaded environments), not + * doing so will createObject nasty side effects of configuration not being visisble depending on the thread + * active. + */ +@Component +public final class ThreadBasedConfigurationFilter implements PropertyFilter{ + + static final ThreadLocal<Boolean> THREADED_METADATA_FILTERED = new ThreadLocal<Boolean>(){ + @Override + protected Boolean initialValue() { + return Boolean.TRUE; + } + }; + + private static final ThreadLocal<ThreadFilterContext> THREADED_MAP_FILTERS = new ThreadLocal<ThreadFilterContext>(){ + @Override + protected ThreadFilterContext initialValue() { + return new ThreadFilterContext(); + } + }; + + private static final ThreadLocal<ThreadFilterContext> THREADED_VALUE_FILTERS = new ThreadLocal<ThreadFilterContext>(){ + @Override + protected ThreadFilterContext initialValue() { + return new ThreadFilterContext(); + } + }; + + /** + * Flag if metadata entries (starting with an '_') are filtered out on when accessing multiple properties, default + * is {@code true}. + * @return true, if metadata entries (starting with an '_') are to be filtered. + */ + public static boolean isMetadataFiltered(){ + return THREADED_METADATA_FILTERED.get(); + } + + /** + * Seactivates metadata filtering also on global map access for this thread. + * @see #cleanupFilterContext() + * @param filtered true,to enable metadata filtering (default). + */ + public static void setMetadataFiltered(boolean filtered){ + THREADED_METADATA_FILTERED.set(filtered); + } + + /** + * Access the filtering configuration that is used on the current thread for + * filtering single property values accessed. + * + * @return the filtering config, never null. + */ + public static ThreadFilterContext getSingleValueFilterContext(){ + return THREADED_VALUE_FILTERS.get(); + } + + /** + * Access the filtering configuration that is used used on the current thread + * for filtering configuration properties accessed as full + * map. + * @return the filtering config, never null. + */ + public static ThreadFilterContext getMapFilterContext(){ + return THREADED_MAP_FILTERS.get(); + } + + /** + * Removes all programmable filters active on the current thread. + */ + public static void cleanupFilterContext(){ + THREADED_MAP_FILTERS.get().clearFilters(); + THREADED_VALUE_FILTERS.get().clearFilters(); + THREADED_METADATA_FILTERED.set(true); + } + + @Override + 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); + } + }else{ + for(PropertyFilter pred: THREADED_MAP_FILTERS.get().getFilters()){ + valueToBeFiltered = pred.filterProperty(valueToBeFiltered); + } + } + return valueToBeFiltered; + } +} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/filter/src/main/java/org/apache/tamaya/filter/ThreadFilterContext.java ---------------------------------------------------------------------- diff --git a/modules/filter/src/main/java/org/apache/tamaya/filter/ThreadFilterContext.java b/modules/filter/src/main/java/org/apache/tamaya/filter/ThreadFilterContext.java new file mode 100644 index 0000000..8d16572 --- /dev/null +++ b/modules/filter/src/main/java/org/apache/tamaya/filter/ThreadFilterContext.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 ThreadFilterContext 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/36c32fcf/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 fbfcb36..481b314 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 @@ -18,7 +18,7 @@ */ package org.apache.tamaya.filter.internal; -import org.apache.tamaya.filter.ConfigurationFilter; +import org.apache.tamaya.filter.ThreadBasedConfigurationFilter; import org.apache.tamaya.spi.PropertyFilter; import org.apache.tamaya.spi.PropertyValue; import org.apache.tamaya.spi.FilterContext; @@ -34,7 +34,7 @@ public final class DefaultMetadataFilter implements PropertyFilter{ // When accessing keys explicitly, do not hide anything. return valueToBeFiltered; } - if(ConfigurationFilter.isMetadataFiltered()) { + if(ThreadBasedConfigurationFilter.isMetadataFiltered()) { if (context.getProperty().getKey().startsWith("_")) { // Hide metadata entries. return null; http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/filter/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyFilter ---------------------------------------------------------------------- diff --git a/modules/filter/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyFilter b/modules/filter/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyFilter index 806b833..ae0c115 100644 --- a/modules/filter/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyFilter +++ b/modules/filter/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyFilter @@ -16,4 +16,4 @@ # specific language governing permissions and limitations # under the License. # -org.apache.tamaya.filter.ConfigurationFilter \ No newline at end of file +org.apache.tamaya.filter.ThreadBasedConfigurationFilter \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/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 1b812ea..bf3b5f4 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 @@ -19,7 +19,6 @@ package org.apache.tamaya.filter; import org.apache.tamaya.Configuration; -import org.apache.tamaya.ConfigurationProvider; import org.apache.tamaya.spi.PropertyFilter; import org.apache.tamaya.spi.PropertyValue; import org.junit.Test; @@ -27,95 +26,95 @@ import org.junit.Test; import static org.junit.Assert.*; /** - * Tests for {@link ConfigurationFilter}. Created by atsticks on 11.02.16. + * Tests for {@link ThreadBasedConfigurationFilter}. Created by atsticks on 11.02.16. */ public class ConfigurationFilterTest { @Test public void testMetadataFiltered() throws Exception { - ConfigurationFilter.setMetadataFiltered(true); - assertTrue(ConfigurationFilter.isMetadataFiltered()); - ConfigurationFilter.setMetadataFiltered(false); - assertFalse(ConfigurationFilter.isMetadataFiltered()); + ThreadBasedConfigurationFilter.setMetadataFiltered(true); + assertTrue(ThreadBasedConfigurationFilter.isMetadataFiltered()); + ThreadBasedConfigurationFilter.setMetadataFiltered(false); + assertFalse(ThreadBasedConfigurationFilter.isMetadataFiltered()); } @Test public void testGetSingleFilters() throws Exception { Configuration config = Configuration.current(); - assertNotNull(ConfigurationFilter.getSingleValueFilterContext()); + assertNotNull(ThreadBasedConfigurationFilter.getSingleValueFilterContext()); PropertyFilter testFilter = new PropertyFilter() { @Override public PropertyValue filterProperty(PropertyValue value) { return value.setValue(value.getKey() + ":testGetSingleFilters"); } }; - ConfigurationFilter.getSingleValueFilterContext().addFilter(testFilter); + ThreadBasedConfigurationFilter.getSingleValueFilterContext().addFilter(testFilter); assertEquals("user.home:testGetSingleFilters", config.get("user.home")); - ConfigurationFilter.getSingleValueFilterContext().removeFilter(testFilter); + ThreadBasedConfigurationFilter.getSingleValueFilterContext().removeFilter(testFilter); assertNotSame("user.home:testGetSingleFilters", config.get("user.home")); } @Test public void testRemoveSingleFiltersAt0() throws Exception { Configuration config = Configuration.current(); - assertNotNull(ConfigurationFilter.getSingleValueFilterContext()); + assertNotNull(ThreadBasedConfigurationFilter.getSingleValueFilterContext()); PropertyFilter testFilter = new PropertyFilter() { @Override public PropertyValue filterProperty(PropertyValue value) { return value.setValue(value.getKey() + ":testGetSingleFilters"); } }; - ConfigurationFilter.getSingleValueFilterContext().addFilter(testFilter); + ThreadBasedConfigurationFilter.getSingleValueFilterContext().addFilter(testFilter); assertEquals("user.home:testGetSingleFilters", config.get("user.home")); - ConfigurationFilter.getSingleValueFilterContext().removeFilter(0); + ThreadBasedConfigurationFilter.getSingleValueFilterContext().removeFilter(0); assertNotSame("user.home:testGetSingleFilters", config.get("user.home")); } @Test public void testGetMapFilters() throws Exception { Configuration config = Configuration.current(); - assertNotNull(ConfigurationFilter.getMapFilterContext()); + assertNotNull(ThreadBasedConfigurationFilter.getMapFilterContext()); PropertyFilter testFilter = new PropertyFilter() { @Override public PropertyValue filterProperty(PropertyValue value) { return value.setValue(value.getKey() + ":testGetMapFilters"); } }; - ConfigurationFilter.getMapFilterContext().addFilter(testFilter); + ThreadBasedConfigurationFilter.getMapFilterContext().addFilter(testFilter); assertEquals("user.home:testGetMapFilters", config.getProperties().get("user.home")); - ConfigurationFilter.getSingleValueFilterContext().removeFilter(testFilter); + ThreadBasedConfigurationFilter.getSingleValueFilterContext().removeFilter(testFilter); assertNotSame("user.home:testGetSingleFilters", config.getProperties().get("user.home")); } @Test public void testRemoveMapFilterAt0() throws Exception { Configuration config = Configuration.current(); - assertNotNull(ConfigurationFilter.getMapFilterContext()); + assertNotNull(ThreadBasedConfigurationFilter.getMapFilterContext()); PropertyFilter testFilter = new PropertyFilter() { @Override public PropertyValue filterProperty(PropertyValue value) { return value.setValue(value.getKey() + ":testGetMapFilters"); } }; - ConfigurationFilter.getMapFilterContext().addFilter(testFilter); + ThreadBasedConfigurationFilter.getMapFilterContext().addFilter(testFilter); assertEquals("user.home:testGetMapFilters", config.getProperties().get("user.home")); - ConfigurationFilter.getMapFilterContext().removeFilter(0); + ThreadBasedConfigurationFilter.getMapFilterContext().removeFilter(0); assertNotSame("user.home:testGetSingleFilters", config.getProperties().get("user.home")); } @Test public void testClearFilters() throws Exception { Configuration config = Configuration.current(); - assertNotNull(ConfigurationFilter.getSingleValueFilterContext()); + assertNotNull(ThreadBasedConfigurationFilter.getSingleValueFilterContext()); PropertyFilter testFilter = new PropertyFilter() { @Override public PropertyValue filterProperty(PropertyValue value) { return value.setValue(value.getKey() + ":testGetSingleFilters"); } }; - ConfigurationFilter.getSingleValueFilterContext().addFilter(testFilter); + ThreadBasedConfigurationFilter.getSingleValueFilterContext().addFilter(testFilter); assertEquals("user.home:testGetSingleFilters", config.get("user.home")); - ConfigurationFilter.cleanupFilterContext(); + ThreadBasedConfigurationFilter.cleanupFilterContext(); assertNotSame("user.home:testGetSingleFilters", config.get("user.home")); } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/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 ef28970..5f7f790 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 @@ -33,7 +33,7 @@ import java.util.Map; import static org.junit.Assert.*; /** - * Tests for {@link CompositeFilter}. Created by atsticks on 11.02.16. + * Tests for {@link ThreadFilterContext}. Created by atsticks on 11.02.16. */ public class ProgrammableFilterTest { @@ -44,7 +44,7 @@ public class ProgrammableFilterTest { @Test public void testAddRemoveFilter() throws Exception { - CompositeFilter filter = new CompositeFilter(); + ThreadFilterContext filter = new ThreadFilterContext(); Map<String,PropertyValue> map = new HashMap<>(); FilterContext context1 = new FilterContext(test1Property, map, context); FilterContext context2 = new FilterContext(test2Property, map, context); @@ -86,7 +86,7 @@ public class ProgrammableFilterTest { @Test public void testClearFilters() throws Exception { - CompositeFilter filter = new CompositeFilter(); + ThreadFilterContext filter = new ThreadFilterContext(); RegexPropertyFilter regexFilter = new RegexPropertyFilter(); regexFilter.setIncludes("test1.*"); Map<String,String> map = new HashMap<>(); @@ -125,7 +125,7 @@ public class ProgrammableFilterTest { @Test public void testSetFilters() throws Exception { - CompositeFilter filter = new CompositeFilter(); + ThreadFilterContext filter = new ThreadFilterContext(); RegexPropertyFilter regexFilter = new RegexPropertyFilter(); regexFilter.setIncludes("test\\..*"); Map<String,PropertyValue> map = new HashMap<>(); @@ -157,7 +157,7 @@ public class ProgrammableFilterTest { @Test public void testSetFilters1() throws Exception { - CompositeFilter filter = new CompositeFilter(); + ThreadFilterContext filter = new ThreadFilterContext(); RegexPropertyFilter regexFilter = new RegexPropertyFilter(); regexFilter.setIncludes("test1.*"); @@ -185,7 +185,7 @@ public class ProgrammableFilterTest { @Test public void testGetFilters() throws Exception { - CompositeFilter filter = new CompositeFilter(); + ThreadFilterContext filter = new ThreadFilterContext(); assertNotNull(filter.getFilters()); assertTrue(filter.getFilters().isEmpty()); RegexPropertyFilter regexFilter = new RegexPropertyFilter(); @@ -199,7 +199,7 @@ public class ProgrammableFilterTest { @Test public void testToString() throws Exception { - CompositeFilter filter = new CompositeFilter(); + ThreadFilterContext filter = new ThreadFilterContext(); 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/36c32fcf/modules/formats/base/pom.xml ---------------------------------------------------------------------- diff --git a/modules/formats/base/pom.xml b/modules/formats/base/pom.xml index a2007ce..6fd3c13 100644 --- a/modules/formats/base/pom.xml +++ b/modules/formats/base/pom.xml @@ -29,7 +29,7 @@ under the License. </parent> <artifactId>tamaya-formats</artifactId> - <name>Apache Tamaya Modules Formats Common</name> + <name>Apache Tamaya Modules - Formats Common</name> <packaging>jar</packaging> <dependencies> @@ -54,7 +54,7 @@ under the License. <artifactId>tamaya-functions</artifactId> <version>${project.version}</version> </dependency> - <!-- Test scope only, do not create a code dependency! --> + <!-- Test scope only, do not createObject a code dependency! --> <dependency> <groupId>org.apache.tamaya</groupId> <artifactId>tamaya-core</artifactId> http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/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 0e4c72e..b77949e 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 @@ -38,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 getChild a chance to read the resource, if they succeed the + * For each resource found the configuration formats passed getField 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 { @@ -122,7 +122,7 @@ public abstract class BaseFormatPropertySourceProvider implements PropertySource /** - * Method to create a {@link org.apache.tamaya.spi.PropertySource} based on the given entries read. + * Method to createObject a {@link org.apache.tamaya.spi.PropertySource} based on the given entries read. * * @param data the configuration data, not null. * @return the {@link org.apache.tamaya.spi.PropertySource} instance ready to be registered.
