blob: d32b4c45eb2da4cce6e444ad39266d2ece8746f0 [file] [log] [blame]
/*
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.apache.royale.formatter.internal.config;
import java.util.Properties;
import java.util.Enumeration;
import java.util.List;
import java.util.LinkedList;
import java.util.StringTokenizer;
import org.apache.royale.compiler.exceptions.ConfigurationException;
import org.apache.royale.formatter.config.ConfigurationBuffer;
/**
* A utility class, which is used to load configuration options via
* system properties and populate a ConfigurationBuffer. A
* counterpart of CommandLineConfigurator and FileConfigurator.
*/
public class SystemPropertyConfigurator
{
/**
* Opportunistically find some configuration settings in system properties.
* @param buffer the intermediate config buffer
* @param prefix an optional prefix to add to the variable, pass null if no prefix
*/
public static void load( final ConfigurationBuffer buffer, String prefix ) throws ConfigurationException
{
try
{
Properties props = System.getProperties();
for (Enumeration<?> e = props.propertyNames(); e.hasMoreElements();)
{
String propname = (String) e.nextElement();
if (!propname.startsWith( prefix + "."))
{
String value = System.getProperty( propname );
buffer.setToken( propname, value );
continue;
}
String varname = propname.substring( prefix.length() + 1 );
if (!buffer.isValidVar( varname ))
continue;
String value = System.getProperty( propname );
List<String> args = new LinkedList<String>();
StringTokenizer t = new StringTokenizer( value, "," );
while (t.hasMoreTokens())
{
String token = t.nextToken();
args.add( token );
}
buffer.setVar( varname, args, "system properties", -1 );
}
}
catch (SecurityException se)
{
// just ignore, this is an optional for loading configuration
}
}
}