/**
     * resolve properties inside a properties object
     *
     * @param props   properties to resolve
     * @param xmlProp
     * @param file
     */
private void resolveAllProperties(Properties props, IXMLElement xmlProp, File file) throws CompilerException
    {
        variableSubstitutor.setBracesRequired(true);
        for (Enumeration e = props.keys(); e.hasMoreElements();)
        {
            String name = (String) e.nextElement();
            String value = props.getProperty(name);
            int mods = -1;
            do
            {
                StringReader read = new StringReader(value);
                StringWriter write = new StringWriter();
                try
                {
                    try
                    {
                        mods = variableSubstitutor.substitute(read, write, SubstitutionType.TYPE_AT);
                    }
                    catch (Exception e1)
                    {
                        throw new IOException(e1.getMessage());
                    }
                    // TODO: check for circular references. We need to know
                    // which
                    // variables were substituted to do that
                    props.put(name, value);
                }
                catch (IOException ex)
                {
                    assertionHelper.parseError(xmlProp, "Faild to load file: " + file.getAbsolutePath(),
                            ex);
                }
            }
            while (mods != 0);
        }
    }
private void resolveAllProperties(Properties props, IXMLElement xmlProp, File file) throws CompilerException
{
variableSubstitutor.setBracesRequired(true);
for (Enumeration e = props.keys(); e.hasMoreElements();)
{
String name = (String) e.nextElement();
String value = props.getProperty(name);
int mods = -1;
do
{
StringReader read = new StringReader(value);
StringWriter write = new StringWriter();
try
{
try
{
mods = variableSubstitutor.substitute(read, write, SubstitutionType.TYPE_AT);
}
catch (Exception e1)
{
throw new IOException(e1.getMessage());
}
// TODO: check for circular references. We need to know
// which
// variables were substituted to do that
props.put(name, value);
}
catch (IOException ex)
{
assertionHelper.parseError(xmlProp, "Faild to load file: " + file.getAbsolutePath(),
ex);
}
}
while (mods != 0);
}
}
private void resolveAllProperties(Properties props, IXMLElement xmlProp, File file) throws CompilerException
{
variableSubstitutor.setBracesRequired(true);
for (Enumeration e = props.keys(); e.hasMoreElements();)
{
String name = (String) e.nextElement();
String value = props.getProperty(name);
int mods = -1;
do
{
StringReader read = new StringReader(value);
StringWriter write = new StringWriter();
try
{
try
{
mods = variableSubstitutor.substitute(read, write, SubstitutionType.TYPE_AT);
}
catch (Exception e1)
{
throw new IOException(e1.getMessage());
}
// TODO: check for circular references. We need to know
// which
// variables were substituted to do that
props.put(name, value);
}
catch (IOException ex)
{
assertionHelper.parseError(xmlProp, "Faild to load file: " + file.getAbsolutePath(),
ex);
}
}
while (mods != 0);
}
}
private void resolveAllProperties(Properties props, IXMLElement xmlProp, File file) throws CompilerException
{
variableSubstitutor.setBracesRequired(true);
for (Enumeration e = props.keys(); e.hasMoreElements();)
{
String name = (String) e.nextElement();
String value = props.getProperty(name);
int mods = -1;
do
{
StringReader read = new StringReader(value);
StringWriter write = new StringWriter();
try
{
try
{
mods = variableSubstitutor.substitute(read, write, SubstitutionType.TYPE_AT);
}
catch (Exception e1)
{
throw new IOException(e1.getMessage());
}
// TODO: check for circular references. We need to know
// which
// variables were substituted to do that
props.put(name, value);
}
catch (IOException ex)
{
assertionHelper.parseError(xmlProp, "Faild to load file: " + file.getAbsolutePath(),
ex);
}
}
while (mods != 0);
}
}