package com.xtremelabs.robolectric.util; import java.util.Enumeration; import java.util.Properties; import java.util.regex.Matcher; import java.util.regex.Pattern; public class PropertiesHelper { public static String doSingleSubstitution(String originalValue, Properties properties) { if (originalValue == null) { return null; } Pattern variablePattern = Pattern.compile("([^$]*)\\$\\{(.*?)\\}(.*)"); String expandedValue = originalValue; Matcher variableMatcher = variablePattern.matcher(expandedValue); while (variableMatcher.matches()) { String propertyName = variableMatcher.group(2); String propertyValue = null; if (properties != null) { propertyValue = properties.getProperty(propertyName); } if (propertyValue == null) { propertyValue = System.getProperty(propertyName); } if (propertyValue == null) { return originalValue; } String sdkPathStart = variableMatcher.group(1); String sdkPathEnd = variableMatcher.group(3); expandedValue = sdkPathStart + propertyValue + sdkPathEnd; variableMatcher = variablePattern.matcher(expandedValue); } return expandedValue; } public static void doSubstitutions(Properties properties) { Enumeration propertyNames = properties.propertyNames(); while (propertyNames.hasMoreElements()) { String propertyName = (String) propertyNames.nextElement(); String propertyValue = properties.getProperty(propertyName); String expandedPropertyValue = doSingleSubstitution(propertyValue, properties); properties.setProperty(propertyName, expandedPropertyValue); } } }