| /* |
| * |
| * 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 |
| } |
| } |
| } |