This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch properties in repository https://gitbox.apache.org/repos/asf/camel.git
commit 319ed3f938149073d3ff4661fbe70cae138a041a Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Wed Jul 3 14:11:27 2019 +0200 CAMEL-13708: Properties component should have API to make it easier to lookup a property on-demand or from all pre-loaded properties. --- .../properties/DefaultPropertiesLookup.java | 20 ++++++++++++-------- .../component/properties/PropertiesComponent.java | 15 ++++----------- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/components/camel-properties/src/main/java/org/apache/camel/component/properties/DefaultPropertiesLookup.java b/components/camel-properties/src/main/java/org/apache/camel/component/properties/DefaultPropertiesLookup.java index bb66c1b..c1793cb 100644 --- a/components/camel-properties/src/main/java/org/apache/camel/component/properties/DefaultPropertiesLookup.java +++ b/components/camel-properties/src/main/java/org/apache/camel/component/properties/DefaultPropertiesLookup.java @@ -18,29 +18,33 @@ package org.apache.camel.component.properties; import java.util.Iterator; import java.util.List; -import java.util.Properties; /** * Default {@link PropertiesLookup} which lookup properties from a {@link java.util.Properties} with all existing properties. */ public class DefaultPropertiesLookup implements PropertiesLookup { - private final Properties loadedProperties; + private final List<LocationPropertiesSource> locationSources; private final List<PropertiesSource> sources; - public DefaultPropertiesLookup(Properties loadedProperties, List<PropertiesSource> sources) { - this.loadedProperties = loadedProperties; + public DefaultPropertiesLookup(List<LocationPropertiesSource> locationSources, List<PropertiesSource> sources) { + this.locationSources = locationSources; this.sources = sources; } @Override public String lookup(String name) { - String answer = loadedProperties.getProperty(name); + String answer = null; + // try till first found source + Iterator<LocationPropertiesSource> it = locationSources.iterator(); + while (answer == null && it.hasNext()) { + answer = it.next().getProperty(name); + } if (answer == null && sources != null) { // try till first found source - Iterator<PropertiesSource> it = sources.iterator(); - while (answer == null && it.hasNext()) { - answer = it.next().getProperty(name); + Iterator<PropertiesSource> it2 = sources.iterator(); + while (answer == null && it2.hasNext()) { + answer = it2.next().getProperty(name); } } return answer; diff --git a/components/camel-properties/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java b/components/camel-properties/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java index 5f446ae..9e2e030 100644 --- a/components/camel-properties/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java +++ b/components/camel-properties/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java @@ -102,7 +102,6 @@ public class PropertiesComponent extends DefaultComponent implements org.apache. private static final Logger LOG = LoggerFactory.getLogger(PropertiesComponent.class); - private transient Properties cachedLoadedProperties; private final Map<String, PropertiesFunction> functions = new LinkedHashMap<>(); private PropertiesResolver propertiesResolver = new DefaultPropertiesResolver(this); private PropertiesParser propertiesParser = new DefaultPropertiesParser(this); @@ -110,6 +109,9 @@ public class PropertiesComponent extends DefaultComponent implements org.apache. private final List<PropertiesSource> sources = new ArrayList<>(); private final List<LocationPropertiesSource> locationSources = new ArrayList<>(); + private transient Properties cachedLoadedProperties; + private final PropertiesLookup propertiesLookup = new DefaultPropertiesLookup(locationSources, sources); + @Metadata private boolean ignoreMissingLocation; @Metadata @@ -166,16 +168,7 @@ public class PropertiesComponent extends DefaultComponent implements org.apache. } public String parseUri(String uri) { - // optimise to only load properties once as we use the configured locations - if (cache) { - if (cachedLoadedProperties == null) { - cachedLoadedProperties = doLoadProperties(); - } - return parseUri(uri, new DefaultPropertiesLookup(cachedLoadedProperties, sources)); - } else { - Properties prop = doLoadProperties(); - return parseUri(uri, new DefaultPropertiesLookup(prop, sources)); - } + return parseUri(uri, propertiesLookup); } public Properties loadProperties() {