Repository: airavata
Updated Branches:
  refs/heads/master 7b61c4801 -> 53acbbde5


https://issues.apache.org/jira/browse/AIRAVATA-1047


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/53acbbde
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/53acbbde
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/53acbbde

Branch: refs/heads/master
Commit: 53acbbde5d290d7aca927c4d3b5ed82aa7de7eb9
Parents: 7b61c48
Author: Saminda Wijeratne <[email protected]>
Authored: Sat Mar 8 17:53:25 2014 -0500
Committer: Saminda Wijeratne <[email protected]>
Committed: Sat Mar 8 17:53:25 2014 -0500

----------------------------------------------------------------------
 .../common/utils/ApplicationSettings.java       | 36 +++++++++++++++-----
 .../airavata/common/utils/StringUtil.java       | 20 +++++++++++
 2 files changed, 47 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/53acbbde/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ApplicationSettings.java
----------------------------------------------------------------------
diff --git 
a/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ApplicationSettings.java
 
b/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ApplicationSettings.java
index 715c7d2..54225fa 100644
--- 
a/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ApplicationSettings.java
+++ 
b/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ApplicationSettings.java
@@ -103,14 +103,6 @@ public abstract class ApplicationSettings {
                throw new 
ApplicationSettingsLoadException(propertyLoadException);
        }
     }
-    
-    public static String getSetting(String key) throws 
ApplicationSettingsException{
-       validateSuccessfulPropertyFileLoad();
-       if (properties.containsKey(key)){
-               return properties.getProperty(key);
-       }
-       throw new UnspecifiedApplicationSettingsException(key);
-    }
 
     /**
      * Returns the configuration value relevant for the given key.
@@ -121,6 +113,7 @@ public abstract class ApplicationSettings {
      * @return The configuration value. For above example caller will get a 
value like
      * http://192.2.33.12:8080/axis2/services/RegistryService?wsdl
      * @throws ApplicationSettingsException If an error occurred while reading 
configurations.
+     * @deprecated use #getSetting(String) instead
      */
     public static String getAbsoluteSetting(String key) throws 
ApplicationSettingsException {
 
@@ -157,17 +150,41 @@ public abstract class ApplicationSettings {
         return matches;
     }
     
+    public static String getSetting(String key) throws 
ApplicationSettingsException{
+       validateSuccessfulPropertyFileLoad();
+       if (properties.containsKey(key)){
+               return deriveAbsoluteValue(properties.getProperty(key));
+       }
+       throw new UnspecifiedApplicationSettingsException(key);
+    }
+    
     public static String getSetting(String key, String defaultValue){
        try {
                        validateSuccessfulPropertyFileLoad();
                        if (properties.containsKey(key)){
-                               return properties.getProperty(key);
+                               return 
deriveAbsoluteValue(properties.getProperty(key));
                        }
                } catch (ApplicationSettingsException e) {
                        //we'll ignore this error since a default value is 
provided
                }
                return defaultValue;
     }
+
+       private static String deriveAbsoluteValue(String property) {
+               if (property!=null){
+                       Map<Integer, String> containedParameters = 
StringUtil.getContainedParameters(property);
+                       List<String> parametersAlreadyProcessed=new 
ArrayList<String>();
+                       for (String parameter : containedParameters.values()) {
+                               if 
(!parametersAlreadyProcessed.contains(parameter)) {
+                                       String parameterName = 
parameter.substring(2,parameter.length() - 1);
+                                       String parameterValue = 
getSetting(parameterName,parameter);
+                                       property = 
property.replaceAll(Pattern.quote(parameter), parameterValue);
+                                       
parametersAlreadyProcessed.add(parameter);
+                               }
+                       }
+               }
+               return property;
+       }
     
     public static void setSetting(String key, String value) throws 
ApplicationSettingsException{
        properties.setProperty(key, value);
@@ -289,4 +306,5 @@ public abstract class ApplicationSettings {
                        }
                }
        }
+       
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/53acbbde/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/StringUtil.java
----------------------------------------------------------------------
diff --git 
a/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/StringUtil.java
 
b/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/StringUtil.java
index 0ea3867..d4eda58 100644
--- 
a/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/StringUtil.java
+++ 
b/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/StringUtil.java
@@ -24,7 +24,9 @@ package org.apache.airavata.common.utils;
 import java.io.ByteArrayOutputStream;
 import java.io.PrintStream;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -32,6 +34,24 @@ public class StringUtil {
        public static final String DELIMETER=",";
        public static final String QUOTE="\"";
        
+       public static Map<Integer, String> getContainedParameters(String s) {
+               Map<Integer,String> parameterMap=new HashMap<Integer,String>();
+               int i=0;
+               for(i=0;i<s.length();i++){
+                       if (s.charAt(i)=='$' && (i+1)<s.length() && 
s.charAt(i+1)=='{'){
+                               int i2=s.indexOf('{', i+2);
+                               int e=s.indexOf('}', i+2);
+                               if (e!=-1){
+                                       if (i2==-1 || e<i2){
+                                               parameterMap.put(i, 
s.substring(i,e+1));
+                                               i=e;
+                                       }
+                               }
+                       }
+               }
+               return parameterMap;
+       }
+       
        // Merits for the following function should go to 
        // http://blog.houen.net/java-get-url-from-string/ 
        public static List<String> getURLS(String text) {

Reply via email to