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() {

Reply via email to