Fix #31801: Support for multi-valued configuration properties In PropertyOracle, this change deprecated the existing property access methods in favor of two new methods that query configuration and selection (= deferred-binding) properties. Configuration properties may have multiple values, using the syntax: <define-configuration-property name="name" is-multi-valued="true|false"/> <extend-configuration-property name="name" value="value"/> <set-configuration-property name="name" value="value"/> <clear-configuration-property name="name"/> The following tag is still supported, but deprecated: <append-configuration-property name="name" value="value"/> Existing xml files using this tag have been modified to use the new tags. Review by: spoon git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@5321 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/core/ext/ConfigurationProperty.java b/dev/core/src/com/google/gwt/core/ext/ConfigurationProperty.java new file mode 100644 index 0000000..4967881 --- /dev/null +++ b/dev/core/src/com/google/gwt/core/ext/ConfigurationProperty.java
@@ -0,0 +1,39 @@ +/* + * Copyright 2009 Google Inc. + * + * Licensed 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 com.google.gwt.core.ext; + +import java.util.List; + +/** + * A named configuration (property, values) pair. + */ +public interface ConfigurationProperty { + + /** + * The name of the property. + * + * @return the property name as a String. + * */ + String getName(); + + /** + * The values for the permutation currently being considered. + * + * @return the property values as a List of Strings. + */ + List<String> getValues(); +}
diff --git a/dev/core/src/com/google/gwt/core/ext/PropertyOracle.java b/dev/core/src/com/google/gwt/core/ext/PropertyOracle.java index 314cd2e..4fb14c0 100644 --- a/dev/core/src/com/google/gwt/core/ext/PropertyOracle.java +++ b/dev/core/src/com/google/gwt/core/ext/PropertyOracle.java
@@ -21,6 +21,15 @@ public interface PropertyOracle { /** + * Attempts to get a named configuration property. Throws + * <code>BadPropertyValueException</code> if the property is undefined. The + * result of invoking this method with the same <code>propertyName</code> must + * be stable. + */ + ConfigurationProperty getConfigurationProperty(String propertyName) + throws BadPropertyValueException; + + /** * Attempts to get a named deferred binding property or configuration * property. Throws <code>BadPropertyValueException</code> if the property is * either undefined or has a value that is unsupported. The result of invoking @@ -30,6 +39,7 @@ * @param propertyName the name of the property * @return a value for the property */ + @Deprecated String getPropertyValue(TreeLogger logger, String propertyName) throws BadPropertyValueException; @@ -44,6 +54,16 @@ * @param propertyName the name of the property * @return the possible values for the property */ + @Deprecated String[] getPropertyValueSet(TreeLogger logger, String propertyName) throws BadPropertyValueException; + + /** + * Attempts to get a named deferred binding property. Throws + * <code>BadPropertyValueException</code> if the property is either undefined + * or has a value that is unsupported. The result of invoking this method with + * the same <code>propertyName</code> must be stable. + */ + SelectionProperty getSelectionProperty(TreeLogger logger, String propertyName) + throws BadPropertyValueException; }
diff --git a/dev/core/src/com/google/gwt/core/ext/SelectionProperty.java b/dev/core/src/com/google/gwt/core/ext/SelectionProperty.java new file mode 100644 index 0000000..fda8cfc --- /dev/null +++ b/dev/core/src/com/google/gwt/core/ext/SelectionProperty.java
@@ -0,0 +1,46 @@ +/* + * Copyright 2009 Google Inc. + * + * Licensed 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 com.google.gwt.core.ext; + +import java.util.SortedSet; + +/** + * A named deferred binding (property, value) pair. + */ +public interface SelectionProperty { + + /** + * The name of the property. + * + * @return the property name as a String. + * */ + String getName(); + + /** + * The value for the permutation currently being considered. + * + * @return the property value as a String. + */ + String getCurrentValue(); + + /** + * Returns the possible values for the property in sorted order. + * + * @return a SortedSet of Strings containing the possible property values. + */ + SortedSet<String> getPossibleValues(); +}
diff --git a/dev/core/src/com/google/gwt/core/ext/linker/ConfigurationProperty.java b/dev/core/src/com/google/gwt/core/ext/linker/ConfigurationProperty.java index ca4faad..dfaf77a 100644 --- a/dev/core/src/com/google/gwt/core/ext/linker/ConfigurationProperty.java +++ b/dev/core/src/com/google/gwt/core/ext/linker/ConfigurationProperty.java
@@ -15,6 +15,8 @@ */ package com.google.gwt.core.ext.linker; +import java.util.List; + /** * Represents a configuration property. These properties do not affect * deferred-binding decisions, but may affect the behavior of Linkers and @@ -31,9 +33,22 @@ * Returns the name of the configuration property. */ String getName(); + + /** + * Returns the defined value for the configuration property. If the property + * has multiple values, this returns the first value only. + */ + @Deprecated + String getValue(); + + /** + * Returns the defined values for the configuration property as a List + * of Strings. + */ + List<String> getValues(); /** - * Returns the defined value for the configuration property. + * Returns true if this property has more than one value. */ - String getValue(); + boolean hasMultipleValues(); }
diff --git a/dev/core/src/com/google/gwt/core/ext/linker/impl/StandardConfigurationProperty.java b/dev/core/src/com/google/gwt/core/ext/linker/impl/StandardConfigurationProperty.java index 72851f6..ef29748 100644 --- a/dev/core/src/com/google/gwt/core/ext/linker/impl/StandardConfigurationProperty.java +++ b/dev/core/src/com/google/gwt/core/ext/linker/impl/StandardConfigurationProperty.java
@@ -17,6 +17,8 @@ import com.google.gwt.core.ext.linker.ConfigurationProperty; +import java.util.List; + /** * The standard implementation of {@link ConfigurationProperty} from a * {@link com.google.gwt.dev.cfg.ConfigurationProperty}. @@ -24,19 +26,33 @@ public class StandardConfigurationProperty implements ConfigurationProperty { private final String name; - private final String value; + private final List<String> values; public StandardConfigurationProperty( com.google.gwt.dev.cfg.ConfigurationProperty p) { - this.name = p.getName(); - this.value = p.getValue(); + name = p.getName(); + values = p.getValues(); + + if (values == null || values.size() == 0) { + throw new IllegalArgumentException("values is null or empty"); + } } public String getName() { return name; } + @Deprecated public String getValue() { - return value; + // values should always have at least one entry + return values.get(0); + } + + public List<String> getValues() { + return values; + } + + public boolean hasMultipleValues() { + return values.size() > 1; } }
diff --git a/dev/core/src/com/google/gwt/dev/cfg/ConditionWhenPropertyIs.java b/dev/core/src/com/google/gwt/dev/cfg/ConditionWhenPropertyIs.java index abd03b1..566c24d 100644 --- a/dev/core/src/com/google/gwt/dev/cfg/ConditionWhenPropertyIs.java +++ b/dev/core/src/com/google/gwt/dev/cfg/ConditionWhenPropertyIs.java
@@ -16,8 +16,10 @@ package com.google.gwt.dev.cfg; import com.google.gwt.core.ext.BadPropertyValueException; +import com.google.gwt.core.ext.ConfigurationProperty; import com.google.gwt.core.ext.GeneratorContext; import com.google.gwt.core.ext.PropertyOracle; +import com.google.gwt.core.ext.SelectionProperty; import com.google.gwt.core.ext.TreeLogger; import com.google.gwt.core.ext.UnableToCompleteException; @@ -45,7 +47,15 @@ String testValue; try { PropertyOracle propertyOracle = context.getPropertyOracle(); - testValue = propertyOracle.getPropertyValue(logger, propName); + try { + SelectionProperty prop + = propertyOracle.getSelectionProperty(logger, propName); + testValue = prop.getCurrentValue(); + } catch (BadPropertyValueException e) { + ConfigurationProperty prop + = propertyOracle.getConfigurationProperty(propName); + testValue = prop.getValues().get(0); + } logger.log(TreeLogger.DEBUG, "Property value is '" + testValue + "'", null); if (testValue.equals(value)) {
diff --git a/dev/core/src/com/google/gwt/dev/cfg/ConfigurationProperty.java b/dev/core/src/com/google/gwt/dev/cfg/ConfigurationProperty.java index e211499..2be034c 100644 --- a/dev/core/src/com/google/gwt/dev/cfg/ConfigurationProperty.java +++ b/dev/core/src/com/google/gwt/dev/cfg/ConfigurationProperty.java
@@ -15,27 +15,76 @@ */ package com.google.gwt.dev.cfg; +import java.util.ArrayList; +import java.util.List; + /** * Represents a module property which does not impact deferred-binding * decisions. */ public class ConfigurationProperty extends Property { - private String value; + private final boolean allowMultipleValues; + private List<String> values = new ArrayList<String>(); public ConfigurationProperty(String name) { - this(name, null); + this(name, false); + } + + public ConfigurationProperty(String name, boolean allowMultipleValues) { + super(name); + this.allowMultipleValues = allowMultipleValues; + if (!allowMultipleValues) { + values.add(null); // single-valued properties default to null + } + } + + public void addValue(String value) { + if (!allowMultipleValues) { + throw new IllegalStateException( + "Attempt to add a value to a single-valued ConfigurationProperty"); + } + values.add(value); } - public ConfigurationProperty(String name, String value) { - super(name); - setValue(value); + public boolean allowsMultipleValues() { + return allowMultipleValues; + } + + public void clear() { + values.clear(); } public String getValue() { - return value; + if (values.size() != 1) { + throw new IllegalStateException("size != 1"); + } + return values.get(0); + } + + public List<String> getValues() { + ArrayList<String> v = new ArrayList<String>(values.size()); + v.addAll(values); + return v; + } + + public boolean isMultiValued() { + return values.size() > 1; } public void setValue(String value) { - this.value = value; + if (values.size() == 0) { + values.add(value); + } else { + values.set(0, value); + } + } + + public void setValues(List<String> values) { + if (!allowMultipleValues && values.size() > 1) { + throw new IllegalStateException( + "Attempt to set > 1 value for a single-valued ConfigurationProperty"); + } + this.values.clear(); + this.values.addAll(values); } }
diff --git a/dev/core/src/com/google/gwt/dev/cfg/ModuleDefSchema.java b/dev/core/src/com/google/gwt/dev/cfg/ModuleDefSchema.java index c63e6c7..63c40da 100644 --- a/dev/core/src/com/google/gwt/dev/cfg/ModuleDefSchema.java +++ b/dev/core/src/com/google/gwt/dev/cfg/ModuleDefSchema.java
@@ -50,9 +50,11 @@ protected final String __add_linker_1_name = null; - protected final String __append_configuration_property_1_name = null; + protected final String __clear_configuration_property_1_name = null; - protected final String __append_configuration_property_2_value = null; + protected final String __define_configuration_property_1_name = null; + + protected final String __define_configuration_property_2_is_multi_valued = null; protected final String __define_linker_1_name = null; @@ -64,6 +66,10 @@ protected final String __entry_point_1_class = null; + protected final String __extend_configuration_property_1_name = null; + + protected final String __extend_configuration_property_2_value = null; + protected final String __extend_property_1_name = null; protected final String __extend_property_2_values = null; @@ -134,31 +140,63 @@ return null; } - protected Schema __append_configuration_property_begin(PropertyName name, - String value) throws UnableToCompleteException { - - // Property must already exist + protected Schema __clear_configuration_property_begin(PropertyName name) + throws UnableToCompleteException { + // Don't allow configuration properties with the same name as a + // deferred-binding property. Property prop = moduleDef.getProperties().find(name.token); - if (prop == null || !(prop instanceof ConfigurationProperty)) { - logger.log(TreeLogger.ERROR, "The property " + name.token - + " must already exist as a configuration property"); + if (prop == null) { + logger.log(TreeLogger.ERROR, "No property named " + name.token + + " has been defined"); + throw new UnableToCompleteException(); + } else if (!(prop instanceof ConfigurationProperty)) { + if (prop instanceof BindingProperty) { + logger.log(TreeLogger.ERROR, "The property " + name.token + + " is already defined as a deferred-binding property"); + } else { + logger.log(TreeLogger.ERROR, "The property " + name.token + + " is already defined as a property of unknown type"); + } throw new UnableToCompleteException(); } - ConfigurationProperty configProp = (ConfigurationProperty) prop; - String oldValue = configProp.getValue(); - if (oldValue == null) { - oldValue = ""; - } - if (oldValue.length() > 0) { - oldValue += ","; - } - configProp.setValue(oldValue + value); + ((ConfigurationProperty) prop).clear(); // No children. return null; } + protected Schema __define_configuration_property_begin(PropertyName name, + String is_multi_valued) throws UnableToCompleteException { + boolean isMultiValued = toPrimitiveBoolean(is_multi_valued); + + // Don't allow configuration properties with the same name as a + // deferred-binding property. + Property existingProperty = moduleDef.getProperties().find(name.token); + if (existingProperty == null) { + // Create the property + existingProperty = moduleDef.getProperties().createConfiguration( + name.token, isMultiValued); + } else { + if (existingProperty instanceof ConfigurationProperty) { + logger.log(TreeLogger.ERROR, "The configuration property named " + + name.token + " may not be redefined."); + } else if (existingProperty instanceof BindingProperty) { + logger.log(TreeLogger.ERROR, "The property " + name.token + + " is already defined as a deferred-binding property"); + } else { + // Future proofing if other subclasses are added. + logger.log(TreeLogger.ERROR, "May not replace property named " + + name.token + " of unknown type " + + existingProperty.getClass().getName()); + } + throw new UnableToCompleteException(); + } + + // No children. + return null; + } + protected Schema __define_linker_begin(LinkerName name, Class<? extends Linker> linker) throws UnableToCompleteException { if (!Linker.class.isAssignableFrom(linker)) { @@ -186,8 +224,8 @@ logger.log(TreeLogger.ERROR, "The deferred-binding property named " + name.token + " may not be redefined."); } else if (existingProperty instanceof ConfigurationProperty) { - logger.log(TreeLogger.ERROR, "A configuration property named " - + name.token + " has already been set."); + logger.log(TreeLogger.ERROR, "The property " + name.token + + " is already defined as a configuration property"); } else { // Future proofing if other subclasses are added. logger.log(TreeLogger.ERROR, "May not replace property named " @@ -212,6 +250,28 @@ return null; } + protected Schema __extend_configuration_property_begin(PropertyName name, + String value) throws UnableToCompleteException { + + // Property must already exist as a configuration property + Property prop = moduleDef.getProperties().find(name.token); + if ((prop == null) || !(prop instanceof ConfigurationProperty)) { + logger.log(TreeLogger.ERROR, "The property " + name.token + + " must already exist as a configuration property"); + throw new UnableToCompleteException(); + } + + ConfigurationProperty configProp = (ConfigurationProperty) prop; + if (!configProp.allowsMultipleValues()) { + logger.log(TreeLogger.ERROR, "The property " + name.token + + " does not support multiple values"); + throw new UnableToCompleteException(); + } + configProp.addValue(value); + + return null; + } + protected Schema __extend_property_begin(BindingProperty property, PropertyValue[] values) { for (int i = 0; i < values.length; i++) { @@ -343,19 +403,27 @@ protected Schema __set_configuration_property_begin(PropertyName name, String value) throws UnableToCompleteException { - - // Don't allow configuration properties with the same name as a - // deferred-binding property. - Property prop = moduleDef.getProperties().find(name.token); - if (prop != null && !(prop instanceof ConfigurationProperty)) { - logger.log(TreeLogger.ERROR, "A deferred-binding property named " - + name.token + " has already been defined"); + + Property existingProperty = moduleDef.getProperties().find(name.token); + if (existingProperty == null) { + // If a property is created by "set-configuration-property" without + // a previous "define-configuration-property", allow it for backwards + // compatibility but don't allow multiple values. + existingProperty = moduleDef.getProperties().createConfiguration( + name.token, false); + } else if (!(existingProperty instanceof ConfigurationProperty)) { + if (existingProperty instanceof BindingProperty) { + logger.log(TreeLogger.ERROR, "The property " + name.token + + " is already defined as a deferred-binding property"); + } else { + // Future proofing if other subclasses are added. + logger.log(TreeLogger.ERROR, "May not replace property named " + + name.token + " of unknown type " + + existingProperty.getClass().getName()); + } throw new UnableToCompleteException(); - } else { - prop = moduleDef.getProperties().createConfiguration(name.token); } - - ((ConfigurationProperty) prop).setValue(value); + ((ConfigurationProperty) existingProperty).setValue(value); // No children. return null;
diff --git a/dev/core/src/com/google/gwt/dev/cfg/Properties.java b/dev/core/src/com/google/gwt/dev/cfg/Properties.java index 79af9a3..d6ca29e 100644 --- a/dev/core/src/com/google/gwt/dev/cfg/Properties.java +++ b/dev/core/src/com/google/gwt/dev/cfg/Properties.java
@@ -47,8 +47,8 @@ * Creates the specified configuration property, or returns an existing one by * the specified name if present. */ - public ConfigurationProperty createConfiguration(String name) { - ConfigurationProperty prop = create(name, ConfigurationProperty.class); + public ConfigurationProperty createConfiguration(String name, boolean allowMultipleValues) { + ConfigurationProperty prop = create(name, allowMultipleValues, ConfigurationProperty.class); configProps.add(prop); return prop; } @@ -90,6 +90,16 @@ } private <T extends Property> T create(String name, Class<T> clazz) { + return create(name, false, false, clazz); + } + + private <T extends Property> T create(String name, boolean flag, Class<T> clazz) { + return create(name, flag, true, clazz); + } + + private <T extends Property> T create(String name, + boolean flag, boolean useFlagArgument, + Class<T> clazz) { if (clazz == null) { throw new NullPointerException("clazz"); } else if (name == null) { @@ -109,7 +119,13 @@ Exception ex = null; try { - T newInstance = clazz.getConstructor(String.class).newInstance(name); + T newInstance; + if (useFlagArgument) { + newInstance = clazz.getConstructor(String.class, + boolean.class).newInstance(name, flag); + } else { + newInstance = clazz.getConstructor(String.class).newInstance(name); + } map.put(name, newInstance); return newInstance; } catch (NoSuchMethodException e) {
diff --git a/dev/core/src/com/google/gwt/dev/cfg/StaticPropertyOracle.java b/dev/core/src/com/google/gwt/dev/cfg/StaticPropertyOracle.java index d0cb379..c257f62 100644 --- a/dev/core/src/com/google/gwt/dev/cfg/StaticPropertyOracle.java +++ b/dev/core/src/com/google/gwt/dev/cfg/StaticPropertyOracle.java
@@ -20,6 +20,9 @@ import com.google.gwt.core.ext.TreeLogger; import java.io.Serializable; +import java.util.List; +import java.util.SortedSet; +import java.util.TreeSet; /** * An implementation of {@link PropertyOracle} that contains property values, @@ -38,6 +41,35 @@ this.orderedProps = orderedProps; this.orderedPropValues = orderedPropValues; this.configProps = configProps; + + // Reject illegal values at construction time + int len = orderedProps.length; + for (int i = 0; i < len; i++) { + BindingProperty prop = orderedProps[i]; + String value = orderedPropValues[i]; + if (!prop.isAllowedValue(value)) { + throw new IllegalArgumentException("Property " + prop.getName() + + " cannot have value " + value); + } + } + } + + public com.google.gwt.core.ext.ConfigurationProperty getConfigurationProperty( + String propertyName) throws BadPropertyValueException { + for (final ConfigurationProperty prop : configProps) { + if (prop.getName().equals(propertyName)) { + return new com.google.gwt.core.ext.ConfigurationProperty() { + public String getName() { + return prop.getName(); + } + + public List<String> getValues() { + return prop.getValues(); + } + }; + } + } + throw new BadPropertyValueException(propertyName); } public BindingProperty[] getOrderedProps() { @@ -48,6 +80,7 @@ return orderedPropValues; } + @Deprecated public String getPropertyValue(TreeLogger logger, String propertyName) throws BadPropertyValueException { // In practice there will probably be so few properties that a linear @@ -78,6 +111,7 @@ throw new BadPropertyValueException(propertyName); } + @Deprecated public String[] getPropertyValueSet(TreeLogger logger, String propertyName) throws BadPropertyValueException { for (int i = 0; i < orderedProps.length; i++) { @@ -93,4 +127,41 @@ // throw new BadPropertyValueException(propertyName); } + + public com.google.gwt.core.ext.SelectionProperty getSelectionProperty( + TreeLogger logger, String propertyName) + throws BadPropertyValueException { + // In practice there will probably be so few properties that a linear + // search is at least as fast as a map lookup by name would be. + // If that turns out not to be the case, the ctor could build a + // name-to-index map. + for (int i = 0; i < orderedProps.length; i++) { + final BindingProperty prop = orderedProps[i]; + final String name = prop.getName(); + if (name.equals(propertyName)) { + final String value = orderedPropValues[i]; + String[] values = prop.getDefinedValues(); + final TreeSet<String> possibleValues = new TreeSet<String>(); + for (String v : values) { + possibleValues.add(v); + } + + return new com.google.gwt.core.ext.SelectionProperty() { + public String getCurrentValue() { + return value; + } + + public String getName() { + return name; + } + + public SortedSet<String> getPossibleValues() { + return possibleValues; + } + }; + } + } + + throw new BadPropertyValueException(propertyName); + } }
diff --git a/dev/core/src/com/google/gwt/dev/shell/ModuleSpacePropertyOracle.java b/dev/core/src/com/google/gwt/dev/shell/ModuleSpacePropertyOracle.java index c74aa6a..58440f0 100644 --- a/dev/core/src/com/google/gwt/dev/shell/ModuleSpacePropertyOracle.java +++ b/dev/core/src/com/google/gwt/dev/shell/ModuleSpacePropertyOracle.java
@@ -17,6 +17,7 @@ import com.google.gwt.core.ext.BadPropertyValueException; import com.google.gwt.core.ext.PropertyOracle; +import com.google.gwt.core.ext.SelectionProperty; import com.google.gwt.core.ext.TreeLogger; import com.google.gwt.dev.cfg.BindingProperty; import com.google.gwt.dev.cfg.ConfigurationProperty; @@ -24,7 +25,10 @@ import com.google.gwt.dev.cfg.Property; import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.SortedSet; +import java.util.TreeSet; /** * Implements a {@link PropertyOracle} in terms of a module space, which makes @@ -43,9 +47,32 @@ this.props = props; } + public com.google.gwt.core.ext.ConfigurationProperty + getConfigurationProperty(String propertyName) + throws BadPropertyValueException { + Property prop = getProperty(propertyName); + if (prop instanceof ConfigurationProperty) { + final ConfigurationProperty cprop = (ConfigurationProperty) prop; + final String name = cprop.getName(); + final List<String> values = cprop.getValues(); + return new com.google.gwt.core.ext.ConfigurationProperty() { + public String getName() { + return name; + } + + public List<String> getValues() { + return values; + } + }; + } else { + throw new BadPropertyValueException(propertyName); + } + } + /** * Executes JavaScript to find the property value. */ + @Deprecated public String getPropertyValue(TreeLogger logger, String propertyName) throws BadPropertyValueException { Property prop = getProperty(propertyName); @@ -75,6 +102,7 @@ /** * Returns the list of possible values for a property. */ + @Deprecated public String[] getPropertyValueSet(TreeLogger logger, String propertyName) throws BadPropertyValueException { Property prop = getProperty(propertyName); @@ -84,6 +112,36 @@ throw new BadPropertyValueException(propertyName); } + public SelectionProperty getSelectionProperty(TreeLogger logger, + String propertyName) throws BadPropertyValueException { + Property prop = getProperty(propertyName); + if (prop instanceof BindingProperty) { + final BindingProperty cprop = (BindingProperty) prop; + final String name = cprop.getName(); + final String value = computePropertyValue(logger, propertyName, cprop); + final SortedSet<String> possibleValues = new TreeSet<String>(); + for (String v : cprop.getDefinedValues()) { + possibleValues.add(v); + } + return new com.google.gwt.core.ext.SelectionProperty() { + + public String getCurrentValue() { + return value; + } + + public String getName() { + return name; + } + + public SortedSet<String> getPossibleValues() { + return possibleValues; + } + }; + } else { + throw new BadPropertyValueException(propertyName); + } + } + /** * Returns the value of the specified property. *
diff --git a/dev/core/test/com/google/gwt/dev/shell/StandardGeneratorContextTest.java b/dev/core/test/com/google/gwt/dev/shell/StandardGeneratorContextTest.java index c2f5de3..05fc32a 100644 --- a/dev/core/test/com/google/gwt/dev/shell/StandardGeneratorContextTest.java +++ b/dev/core/test/com/google/gwt/dev/shell/StandardGeneratorContextTest.java
@@ -16,9 +16,11 @@ package com.google.gwt.dev.shell; import com.google.gwt.core.ext.BadPropertyValueException; +import com.google.gwt.core.ext.ConfigurationProperty; import com.google.gwt.core.ext.Generator; import com.google.gwt.core.ext.GeneratorContext; import com.google.gwt.core.ext.PropertyOracle; +import com.google.gwt.core.ext.SelectionProperty; import com.google.gwt.core.ext.TreeLogger; import com.google.gwt.core.ext.UnableToCompleteException; import com.google.gwt.core.ext.linker.Artifact; @@ -75,6 +77,15 @@ throws BadPropertyValueException { return new String[] {}; } + + public ConfigurationProperty getConfigurationProperty(String name) { + return null; + } + + public SelectionProperty getSelectionProperty(TreeLogger logger, + String name) { + return null; + } } private static class MockPublicOracle implements PublicOracle {
diff --git a/user/src/com/google/gwt/i18n/CldrLocales.gwt.xml b/user/src/com/google/gwt/i18n/CldrLocales.gwt.xml index cec511e..6c80f23 100644 --- a/user/src/com/google/gwt/i18n/CldrLocales.gwt.xml +++ b/user/src/com/google/gwt/i18n/CldrLocales.gwt.xml
@@ -14,459 +14,459 @@ <!-- List of all locales imported into GWT from CLDR, as runtime locales --> <module> - <append-configuration-property name="runtime.locales" value="aa"/> - <append-configuration-property name="runtime.locales" value="aa_DJ"/> - <append-configuration-property name="runtime.locales" value="aa_ER"/> - <append-configuration-property name="runtime.locales" value="aa_ER_SAAHO"/> - <append-configuration-property name="runtime.locales" value="aa_ET"/> - <append-configuration-property name="runtime.locales" value="af"/> - <append-configuration-property name="runtime.locales" value="af_NA"/> - <append-configuration-property name="runtime.locales" value="af_ZA"/> - <append-configuration-property name="runtime.locales" value="ak"/> - <append-configuration-property name="runtime.locales" value="ak_GH"/> - <append-configuration-property name="runtime.locales" value="am"/> - <append-configuration-property name="runtime.locales" value="am_ET"/> - <append-configuration-property name="runtime.locales" value="ar"/> - <append-configuration-property name="runtime.locales" value="ar_AE"/> - <append-configuration-property name="runtime.locales" value="ar_BH"/> - <append-configuration-property name="runtime.locales" value="ar_DZ"/> - <append-configuration-property name="runtime.locales" value="ar_EG"/> - <append-configuration-property name="runtime.locales" value="ar_IQ"/> - <append-configuration-property name="runtime.locales" value="ar_JO"/> - <append-configuration-property name="runtime.locales" value="ar_KW"/> - <append-configuration-property name="runtime.locales" value="ar_LB"/> - <append-configuration-property name="runtime.locales" value="ar_LY"/> - <append-configuration-property name="runtime.locales" value="ar_MA"/> - <append-configuration-property name="runtime.locales" value="ar_OM"/> - <append-configuration-property name="runtime.locales" value="ar_QA"/> - <append-configuration-property name="runtime.locales" value="ar_SA"/> - <append-configuration-property name="runtime.locales" value="ar_SD"/> - <append-configuration-property name="runtime.locales" value="ar_SY"/> - <append-configuration-property name="runtime.locales" value="ar_TN"/> - <append-configuration-property name="runtime.locales" value="ar_YE"/> - <append-configuration-property name="runtime.locales" value="as"/> - <append-configuration-property name="runtime.locales" value="as_IN"/> - <append-configuration-property name="runtime.locales" value="az"/> - <append-configuration-property name="runtime.locales" value="az_AZ"/> - <append-configuration-property name="runtime.locales" value="az_Cyrl"/> - <append-configuration-property name="runtime.locales" value="az_Cyrl_AZ"/> - <append-configuration-property name="runtime.locales" value="az_Latn"/> - <append-configuration-property name="runtime.locales" value="az_Latn_AZ"/> - <append-configuration-property name="runtime.locales" value="be"/> - <append-configuration-property name="runtime.locales" value="be_BY"/> - <append-configuration-property name="runtime.locales" value="bg"/> - <append-configuration-property name="runtime.locales" value="bg_BG"/> - <append-configuration-property name="runtime.locales" value="bn"/> - <append-configuration-property name="runtime.locales" value="bn_BD"/> - <append-configuration-property name="runtime.locales" value="bn_IN"/> - <append-configuration-property name="runtime.locales" value="bs"/> - <append-configuration-property name="runtime.locales" value="bs_BA"/> - <append-configuration-property name="runtime.locales" value="byn"/> - <append-configuration-property name="runtime.locales" value="byn_ER"/> - <append-configuration-property name="runtime.locales" value="ca"/> - <append-configuration-property name="runtime.locales" value="ca_ES"/> - <append-configuration-property name="runtime.locales" value="cch"/> - <append-configuration-property name="runtime.locales" value="cch_NG"/> - <append-configuration-property name="runtime.locales" value="cop"/> - <append-configuration-property name="runtime.locales" value="cs"/> - <append-configuration-property name="runtime.locales" value="cs_CZ"/> - <append-configuration-property name="runtime.locales" value="cy"/> - <append-configuration-property name="runtime.locales" value="cy_GB"/> - <append-configuration-property name="runtime.locales" value="da"/> - <append-configuration-property name="runtime.locales" value="da_DK"/> - <append-configuration-property name="runtime.locales" value="de"/> - <append-configuration-property name="runtime.locales" value="de_AT"/> - <append-configuration-property name="runtime.locales" value="de_BE"/> - <append-configuration-property name="runtime.locales" value="de_CH"/> - <append-configuration-property name="runtime.locales" value="de_DE"/> - <append-configuration-property name="runtime.locales" value="de_LI"/> - <append-configuration-property name="runtime.locales" value="de_LU"/> - <append-configuration-property name="runtime.locales" value="dv"/> - <append-configuration-property name="runtime.locales" value="dv_MV"/> - <append-configuration-property name="runtime.locales" value="dz"/> - <append-configuration-property name="runtime.locales" value="dz_BT"/> - <append-configuration-property name="runtime.locales" value="ee"/> - <append-configuration-property name="runtime.locales" value="ee_GH"/> - <append-configuration-property name="runtime.locales" value="ee_TG"/> - <append-configuration-property name="runtime.locales" value="el"/> - <append-configuration-property name="runtime.locales" value="el_CY"/> - <append-configuration-property name="runtime.locales" value="el_GR"/> - <append-configuration-property name="runtime.locales" value="el_POLYTON"/> - <append-configuration-property name="runtime.locales" value="en"/> - <append-configuration-property name="runtime.locales" value="en_AS"/> - <append-configuration-property name="runtime.locales" value="en_AU"/> - <append-configuration-property name="runtime.locales" value="en_BE"/> - <append-configuration-property name="runtime.locales" value="en_BW"/> - <append-configuration-property name="runtime.locales" value="en_BZ"/> - <append-configuration-property name="runtime.locales" value="en_CA"/> - <append-configuration-property name="runtime.locales" value="en_Dsrt"/> - <append-configuration-property name="runtime.locales" value="en_Dsrt_US"/> - <append-configuration-property name="runtime.locales" value="en_GB"/> - <append-configuration-property name="runtime.locales" value="en_GU"/> - <append-configuration-property name="runtime.locales" value="en_HK"/> - <append-configuration-property name="runtime.locales" value="en_IE"/> - <append-configuration-property name="runtime.locales" value="en_IN"/> - <append-configuration-property name="runtime.locales" value="en_JM"/> - <append-configuration-property name="runtime.locales" value="en_MH"/> - <append-configuration-property name="runtime.locales" value="en_MP"/> - <append-configuration-property name="runtime.locales" value="en_MT"/> - <append-configuration-property name="runtime.locales" value="en_NA"/> - <append-configuration-property name="runtime.locales" value="en_NZ"/> - <append-configuration-property name="runtime.locales" value="en_PH"/> - <append-configuration-property name="runtime.locales" value="en_PK"/> - <append-configuration-property name="runtime.locales" value="en_SG"/> - <append-configuration-property name="runtime.locales" value="en_Shaw"/> - <append-configuration-property name="runtime.locales" value="en_TT"/> - <append-configuration-property name="runtime.locales" value="en_UM"/> - <append-configuration-property name="runtime.locales" value="en_US"/> + <extend-configuration-property name="runtime.locales" value="aa"/> + <extend-configuration-property name="runtime.locales" value="aa_DJ"/> + <extend-configuration-property name="runtime.locales" value="aa_ER"/> + <extend-configuration-property name="runtime.locales" value="aa_ER_SAAHO"/> + <extend-configuration-property name="runtime.locales" value="aa_ET"/> + <extend-configuration-property name="runtime.locales" value="af"/> + <extend-configuration-property name="runtime.locales" value="af_NA"/> + <extend-configuration-property name="runtime.locales" value="af_ZA"/> + <extend-configuration-property name="runtime.locales" value="ak"/> + <extend-configuration-property name="runtime.locales" value="ak_GH"/> + <extend-configuration-property name="runtime.locales" value="am"/> + <extend-configuration-property name="runtime.locales" value="am_ET"/> + <extend-configuration-property name="runtime.locales" value="ar"/> + <extend-configuration-property name="runtime.locales" value="ar_AE"/> + <extend-configuration-property name="runtime.locales" value="ar_BH"/> + <extend-configuration-property name="runtime.locales" value="ar_DZ"/> + <extend-configuration-property name="runtime.locales" value="ar_EG"/> + <extend-configuration-property name="runtime.locales" value="ar_IQ"/> + <extend-configuration-property name="runtime.locales" value="ar_JO"/> + <extend-configuration-property name="runtime.locales" value="ar_KW"/> + <extend-configuration-property name="runtime.locales" value="ar_LB"/> + <extend-configuration-property name="runtime.locales" value="ar_LY"/> + <extend-configuration-property name="runtime.locales" value="ar_MA"/> + <extend-configuration-property name="runtime.locales" value="ar_OM"/> + <extend-configuration-property name="runtime.locales" value="ar_QA"/> + <extend-configuration-property name="runtime.locales" value="ar_SA"/> + <extend-configuration-property name="runtime.locales" value="ar_SD"/> + <extend-configuration-property name="runtime.locales" value="ar_SY"/> + <extend-configuration-property name="runtime.locales" value="ar_TN"/> + <extend-configuration-property name="runtime.locales" value="ar_YE"/> + <extend-configuration-property name="runtime.locales" value="as"/> + <extend-configuration-property name="runtime.locales" value="as_IN"/> + <extend-configuration-property name="runtime.locales" value="az"/> + <extend-configuration-property name="runtime.locales" value="az_AZ"/> + <extend-configuration-property name="runtime.locales" value="az_Cyrl"/> + <extend-configuration-property name="runtime.locales" value="az_Cyrl_AZ"/> + <extend-configuration-property name="runtime.locales" value="az_Latn"/> + <extend-configuration-property name="runtime.locales" value="az_Latn_AZ"/> + <extend-configuration-property name="runtime.locales" value="be"/> + <extend-configuration-property name="runtime.locales" value="be_BY"/> + <extend-configuration-property name="runtime.locales" value="bg"/> + <extend-configuration-property name="runtime.locales" value="bg_BG"/> + <extend-configuration-property name="runtime.locales" value="bn"/> + <extend-configuration-property name="runtime.locales" value="bn_BD"/> + <extend-configuration-property name="runtime.locales" value="bn_IN"/> + <extend-configuration-property name="runtime.locales" value="bs"/> + <extend-configuration-property name="runtime.locales" value="bs_BA"/> + <extend-configuration-property name="runtime.locales" value="byn"/> + <extend-configuration-property name="runtime.locales" value="byn_ER"/> + <extend-configuration-property name="runtime.locales" value="ca"/> + <extend-configuration-property name="runtime.locales" value="ca_ES"/> + <extend-configuration-property name="runtime.locales" value="cch"/> + <extend-configuration-property name="runtime.locales" value="cch_NG"/> + <extend-configuration-property name="runtime.locales" value="cop"/> + <extend-configuration-property name="runtime.locales" value="cs"/> + <extend-configuration-property name="runtime.locales" value="cs_CZ"/> + <extend-configuration-property name="runtime.locales" value="cy"/> + <extend-configuration-property name="runtime.locales" value="cy_GB"/> + <extend-configuration-property name="runtime.locales" value="da"/> + <extend-configuration-property name="runtime.locales" value="da_DK"/> + <extend-configuration-property name="runtime.locales" value="de"/> + <extend-configuration-property name="runtime.locales" value="de_AT"/> + <extend-configuration-property name="runtime.locales" value="de_BE"/> + <extend-configuration-property name="runtime.locales" value="de_CH"/> + <extend-configuration-property name="runtime.locales" value="de_DE"/> + <extend-configuration-property name="runtime.locales" value="de_LI"/> + <extend-configuration-property name="runtime.locales" value="de_LU"/> + <extend-configuration-property name="runtime.locales" value="dv"/> + <extend-configuration-property name="runtime.locales" value="dv_MV"/> + <extend-configuration-property name="runtime.locales" value="dz"/> + <extend-configuration-property name="runtime.locales" value="dz_BT"/> + <extend-configuration-property name="runtime.locales" value="ee"/> + <extend-configuration-property name="runtime.locales" value="ee_GH"/> + <extend-configuration-property name="runtime.locales" value="ee_TG"/> + <extend-configuration-property name="runtime.locales" value="el"/> + <extend-configuration-property name="runtime.locales" value="el_CY"/> + <extend-configuration-property name="runtime.locales" value="el_GR"/> + <extend-configuration-property name="runtime.locales" value="el_POLYTON"/> + <extend-configuration-property name="runtime.locales" value="en"/> + <extend-configuration-property name="runtime.locales" value="en_AS"/> + <extend-configuration-property name="runtime.locales" value="en_AU"/> + <extend-configuration-property name="runtime.locales" value="en_BE"/> + <extend-configuration-property name="runtime.locales" value="en_BW"/> + <extend-configuration-property name="runtime.locales" value="en_BZ"/> + <extend-configuration-property name="runtime.locales" value="en_CA"/> + <extend-configuration-property name="runtime.locales" value="en_Dsrt"/> + <extend-configuration-property name="runtime.locales" value="en_Dsrt_US"/> + <extend-configuration-property name="runtime.locales" value="en_GB"/> + <extend-configuration-property name="runtime.locales" value="en_GU"/> + <extend-configuration-property name="runtime.locales" value="en_HK"/> + <extend-configuration-property name="runtime.locales" value="en_IE"/> + <extend-configuration-property name="runtime.locales" value="en_IN"/> + <extend-configuration-property name="runtime.locales" value="en_JM"/> + <extend-configuration-property name="runtime.locales" value="en_MH"/> + <extend-configuration-property name="runtime.locales" value="en_MP"/> + <extend-configuration-property name="runtime.locales" value="en_MT"/> + <extend-configuration-property name="runtime.locales" value="en_NA"/> + <extend-configuration-property name="runtime.locales" value="en_NZ"/> + <extend-configuration-property name="runtime.locales" value="en_PH"/> + <extend-configuration-property name="runtime.locales" value="en_PK"/> + <extend-configuration-property name="runtime.locales" value="en_SG"/> + <extend-configuration-property name="runtime.locales" value="en_Shaw"/> + <extend-configuration-property name="runtime.locales" value="en_TT"/> + <extend-configuration-property name="runtime.locales" value="en_UM"/> + <extend-configuration-property name="runtime.locales" value="en_US"/> <!-- This doesn't seem appropriate to include here, if you want it just include the following line right after the import for this module. - <append-configuration-property name="runtime.locales" value="en_US_POSIX"/> + <extend-configuration-property name="runtime.locales" value="en_US_POSIX"/> --> - <append-configuration-property name="runtime.locales" value="en_VI"/> - <append-configuration-property name="runtime.locales" value="en_ZA"/> - <append-configuration-property name="runtime.locales" value="en_ZW"/> - <append-configuration-property name="runtime.locales" value="eo"/> - <append-configuration-property name="runtime.locales" value="es"/> - <append-configuration-property name="runtime.locales" value="es_AR"/> - <append-configuration-property name="runtime.locales" value="es_BO"/> - <append-configuration-property name="runtime.locales" value="es_CL"/> - <append-configuration-property name="runtime.locales" value="es_CO"/> - <append-configuration-property name="runtime.locales" value="es_CR"/> - <append-configuration-property name="runtime.locales" value="es_DO"/> - <append-configuration-property name="runtime.locales" value="es_EC"/> - <append-configuration-property name="runtime.locales" value="es_ES"/> - <append-configuration-property name="runtime.locales" value="es_GT"/> - <append-configuration-property name="runtime.locales" value="es_HN"/> - <append-configuration-property name="runtime.locales" value="es_MX"/> - <append-configuration-property name="runtime.locales" value="es_NI"/> - <append-configuration-property name="runtime.locales" value="es_PA"/> - <append-configuration-property name="runtime.locales" value="es_PE"/> - <append-configuration-property name="runtime.locales" value="es_PR"/> - <append-configuration-property name="runtime.locales" value="es_PY"/> - <append-configuration-property name="runtime.locales" value="es_SV"/> - <append-configuration-property name="runtime.locales" value="es_US"/> - <append-configuration-property name="runtime.locales" value="es_UY"/> - <append-configuration-property name="runtime.locales" value="es_VE"/> - <append-configuration-property name="runtime.locales" value="et"/> - <append-configuration-property name="runtime.locales" value="et_EE"/> - <append-configuration-property name="runtime.locales" value="eu"/> - <append-configuration-property name="runtime.locales" value="eu_ES"/> - <append-configuration-property name="runtime.locales" value="fa"/> - <append-configuration-property name="runtime.locales" value="fa_AF"/> - <append-configuration-property name="runtime.locales" value="fa_IR"/> - <append-configuration-property name="runtime.locales" value="fi"/> - <append-configuration-property name="runtime.locales" value="fi_FI"/> - <append-configuration-property name="runtime.locales" value="fil"/> - <append-configuration-property name="runtime.locales" value="fil_PH"/> - <append-configuration-property name="runtime.locales" value="fo"/> - <append-configuration-property name="runtime.locales" value="fo_FO"/> - <append-configuration-property name="runtime.locales" value="fr"/> - <append-configuration-property name="runtime.locales" value="fr_BE"/> - <append-configuration-property name="runtime.locales" value="fr_CA"/> - <append-configuration-property name="runtime.locales" value="fr_CH"/> - <append-configuration-property name="runtime.locales" value="fr_FR"/> - <append-configuration-property name="runtime.locales" value="fr_LU"/> - <append-configuration-property name="runtime.locales" value="fr_MC"/> - <append-configuration-property name="runtime.locales" value="fr_SN"/> - <append-configuration-property name="runtime.locales" value="fur"/> - <append-configuration-property name="runtime.locales" value="fur_IT"/> - <append-configuration-property name="runtime.locales" value="ga"/> - <append-configuration-property name="runtime.locales" value="gaa"/> - <append-configuration-property name="runtime.locales" value="gaa_GH"/> - <append-configuration-property name="runtime.locales" value="ga_IE"/> - <append-configuration-property name="runtime.locales" value="gez"/> - <append-configuration-property name="runtime.locales" value="gez_ER"/> - <append-configuration-property name="runtime.locales" value="gez_ET"/> - <append-configuration-property name="runtime.locales" value="gl"/> - <append-configuration-property name="runtime.locales" value="gl_ES"/> - <append-configuration-property name="runtime.locales" value="gu"/> - <append-configuration-property name="runtime.locales" value="gu_IN"/> - <append-configuration-property name="runtime.locales" value="gv"/> - <append-configuration-property name="runtime.locales" value="gv_GB"/> - <append-configuration-property name="runtime.locales" value="ha"/> - <append-configuration-property name="runtime.locales" value="ha_Arab"/> - <append-configuration-property name="runtime.locales" value="ha_Arab_NG"/> - <append-configuration-property name="runtime.locales" value="ha_Arab_SD"/> - <append-configuration-property name="runtime.locales" value="ha_GH"/> - <append-configuration-property name="runtime.locales" value="ha_Latn"/> - <append-configuration-property name="runtime.locales" value="ha_Latn_GH"/> - <append-configuration-property name="runtime.locales" value="ha_Latn_NE"/> - <append-configuration-property name="runtime.locales" value="ha_Latn_NG"/> - <append-configuration-property name="runtime.locales" value="ha_NE"/> - <append-configuration-property name="runtime.locales" value="ha_NG"/> - <append-configuration-property name="runtime.locales" value="ha_SD"/> - <append-configuration-property name="runtime.locales" value="haw"/> - <append-configuration-property name="runtime.locales" value="haw_US"/> - <append-configuration-property name="runtime.locales" value="he"/> - <append-configuration-property name="runtime.locales" value="he_IL"/> - <append-configuration-property name="runtime.locales" value="hi"/> - <append-configuration-property name="runtime.locales" value="hi_IN"/> - <append-configuration-property name="runtime.locales" value="hr"/> - <append-configuration-property name="runtime.locales" value="hr_HR"/> - <append-configuration-property name="runtime.locales" value="hu"/> - <append-configuration-property name="runtime.locales" value="hu_HU"/> - <append-configuration-property name="runtime.locales" value="hy"/> - <append-configuration-property name="runtime.locales" value="hy_AM"/> - <append-configuration-property name="runtime.locales" value="hy_AM_REVISED"/> - <append-configuration-property name="runtime.locales" value="ia"/> - <append-configuration-property name="runtime.locales" value="id"/> - <append-configuration-property name="runtime.locales" value="id_ID"/> - <append-configuration-property name="runtime.locales" value="ig"/> - <append-configuration-property name="runtime.locales" value="ig_NG"/> - <append-configuration-property name="runtime.locales" value="ii"/> - <append-configuration-property name="runtime.locales" value="ii_CN"/> - <append-configuration-property name="runtime.locales" value="in"/> - <append-configuration-property name="runtime.locales" value="is"/> - <append-configuration-property name="runtime.locales" value="is_IS"/> - <append-configuration-property name="runtime.locales" value="it"/> - <append-configuration-property name="runtime.locales" value="it_CH"/> - <append-configuration-property name="runtime.locales" value="it_IT"/> - <append-configuration-property name="runtime.locales" value="iu"/> - <append-configuration-property name="runtime.locales" value="iw"/> - <append-configuration-property name="runtime.locales" value="ja"/> - <append-configuration-property name="runtime.locales" value="ja_JP"/> - <append-configuration-property name="runtime.locales" value="ka"/> - <append-configuration-property name="runtime.locales" value="ka_GE"/> - <append-configuration-property name="runtime.locales" value="kaj"/> - <append-configuration-property name="runtime.locales" value="kaj_NG"/> - <append-configuration-property name="runtime.locales" value="kam"/> - <append-configuration-property name="runtime.locales" value="kam_KE"/> - <append-configuration-property name="runtime.locales" value="kcg"/> - <append-configuration-property name="runtime.locales" value="kcg_NG"/> - <append-configuration-property name="runtime.locales" value="kfo"/> - <append-configuration-property name="runtime.locales" value="kfo_CI"/> - <append-configuration-property name="runtime.locales" value="kk"/> - <append-configuration-property name="runtime.locales" value="kk_Cyrl"/> - <append-configuration-property name="runtime.locales" value="kk_Cyrl_KZ"/> - <append-configuration-property name="runtime.locales" value="kk_KZ"/> - <append-configuration-property name="runtime.locales" value="kl"/> - <append-configuration-property name="runtime.locales" value="kl_GL"/> - <append-configuration-property name="runtime.locales" value="km"/> - <append-configuration-property name="runtime.locales" value="km_KH"/> - <append-configuration-property name="runtime.locales" value="kn"/> - <append-configuration-property name="runtime.locales" value="kn_IN"/> - <append-configuration-property name="runtime.locales" value="ko"/> - <append-configuration-property name="runtime.locales" value="kok"/> - <append-configuration-property name="runtime.locales" value="kok_IN"/> - <append-configuration-property name="runtime.locales" value="ko_KR"/> - <append-configuration-property name="runtime.locales" value="kpe"/> - <append-configuration-property name="runtime.locales" value="kpe_GN"/> - <append-configuration-property name="runtime.locales" value="kpe_LR"/> - <append-configuration-property name="runtime.locales" value="ku"/> - <append-configuration-property name="runtime.locales" value="ku_Arab"/> - <append-configuration-property name="runtime.locales" value="ku_Latn"/> - <append-configuration-property name="runtime.locales" value="ku_Latn_TR"/> - <append-configuration-property name="runtime.locales" value="ku_TR"/> - <append-configuration-property name="runtime.locales" value="kw"/> - <append-configuration-property name="runtime.locales" value="kw_GB"/> - <append-configuration-property name="runtime.locales" value="ky"/> - <append-configuration-property name="runtime.locales" value="ky_KG"/> - <append-configuration-property name="runtime.locales" value="ln"/> - <append-configuration-property name="runtime.locales" value="ln_CD"/> - <append-configuration-property name="runtime.locales" value="ln_CG"/> - <append-configuration-property name="runtime.locales" value="lo"/> - <append-configuration-property name="runtime.locales" value="lo_LA"/> - <append-configuration-property name="runtime.locales" value="lt"/> - <append-configuration-property name="runtime.locales" value="lt_LT"/> - <append-configuration-property name="runtime.locales" value="lv"/> - <append-configuration-property name="runtime.locales" value="lv_LV"/> - <append-configuration-property name="runtime.locales" value="mk"/> - <append-configuration-property name="runtime.locales" value="mk_MK"/> - <append-configuration-property name="runtime.locales" value="ml"/> - <append-configuration-property name="runtime.locales" value="ml_IN"/> - <append-configuration-property name="runtime.locales" value="mn"/> - <append-configuration-property name="runtime.locales" value="mn_CN"/> - <append-configuration-property name="runtime.locales" value="mn_Cyrl"/> - <append-configuration-property name="runtime.locales" value="mn_Cyrl_MN"/> - <append-configuration-property name="runtime.locales" value="mn_MN"/> - <append-configuration-property name="runtime.locales" value="mn_Mong"/> - <append-configuration-property name="runtime.locales" value="mn_Mong_CN"/> - <append-configuration-property name="runtime.locales" value="mo"/> - <append-configuration-property name="runtime.locales" value="mr"/> - <append-configuration-property name="runtime.locales" value="mr_IN"/> - <append-configuration-property name="runtime.locales" value="ms"/> - <append-configuration-property name="runtime.locales" value="ms_BN"/> - <append-configuration-property name="runtime.locales" value="ms_MY"/> - <append-configuration-property name="runtime.locales" value="mt"/> - <append-configuration-property name="runtime.locales" value="mt_MT"/> - <append-configuration-property name="runtime.locales" value="my"/> - <append-configuration-property name="runtime.locales" value="my_MM"/> - <append-configuration-property name="runtime.locales" value="nb"/> - <append-configuration-property name="runtime.locales" value="nb_NO"/> - <append-configuration-property name="runtime.locales" value="ne"/> - <append-configuration-property name="runtime.locales" value="ne_IN"/> - <append-configuration-property name="runtime.locales" value="ne_NP"/> - <append-configuration-property name="runtime.locales" value="nl"/> - <append-configuration-property name="runtime.locales" value="nl_BE"/> - <append-configuration-property name="runtime.locales" value="nl_NL"/> - <append-configuration-property name="runtime.locales" value="nn"/> - <append-configuration-property name="runtime.locales" value="nn_NO"/> - <append-configuration-property name="runtime.locales" value="no"/> - <append-configuration-property name="runtime.locales" value="nr"/> - <append-configuration-property name="runtime.locales" value="nr_ZA"/> - <append-configuration-property name="runtime.locales" value="nso"/> - <append-configuration-property name="runtime.locales" value="nso_ZA"/> - <append-configuration-property name="runtime.locales" value="ny"/> - <append-configuration-property name="runtime.locales" value="ny_MW"/> - <append-configuration-property name="runtime.locales" value="om"/> - <append-configuration-property name="runtime.locales" value="om_ET"/> - <append-configuration-property name="runtime.locales" value="om_KE"/> - <append-configuration-property name="runtime.locales" value="or"/> - <append-configuration-property name="runtime.locales" value="or_IN"/> - <append-configuration-property name="runtime.locales" value="pa"/> - <append-configuration-property name="runtime.locales" value="pa_Arab"/> - <append-configuration-property name="runtime.locales" value="pa_Arab_PK"/> - <append-configuration-property name="runtime.locales" value="pa_Guru"/> - <append-configuration-property name="runtime.locales" value="pa_Guru_IN"/> - <append-configuration-property name="runtime.locales" value="pa_IN"/> - <append-configuration-property name="runtime.locales" value="pa_PK"/> - <append-configuration-property name="runtime.locales" value="pl"/> - <append-configuration-property name="runtime.locales" value="pl_PL"/> - <append-configuration-property name="runtime.locales" value="ps"/> - <append-configuration-property name="runtime.locales" value="ps_AF"/> - <append-configuration-property name="runtime.locales" value="pt"/> - <append-configuration-property name="runtime.locales" value="pt_BR"/> - <append-configuration-property name="runtime.locales" value="pt_PT"/> - <append-configuration-property name="runtime.locales" value="ro"/> - <append-configuration-property name="runtime.locales" value="ro_MD"/> - <append-configuration-property name="runtime.locales" value="root"/> - <append-configuration-property name="runtime.locales" value="ro_RO"/> - <append-configuration-property name="runtime.locales" value="ru"/> - <append-configuration-property name="runtime.locales" value="ru_RU"/> - <append-configuration-property name="runtime.locales" value="ru_UA"/> - <append-configuration-property name="runtime.locales" value="rw"/> - <append-configuration-property name="runtime.locales" value="rw_RW"/> - <append-configuration-property name="runtime.locales" value="sa"/> - <append-configuration-property name="runtime.locales" value="sa_IN"/> - <append-configuration-property name="runtime.locales" value="se"/> - <append-configuration-property name="runtime.locales" value="se_FI"/> - <append-configuration-property name="runtime.locales" value="se_NO"/> - <append-configuration-property name="runtime.locales" value="sh"/> - <append-configuration-property name="runtime.locales" value="sh_BA"/> - <append-configuration-property name="runtime.locales" value="sh_CS"/> - <append-configuration-property name="runtime.locales" value="sh_YU"/> - <append-configuration-property name="runtime.locales" value="si"/> - <append-configuration-property name="runtime.locales" value="sid"/> - <append-configuration-property name="runtime.locales" value="sid_ET"/> - <append-configuration-property name="runtime.locales" value="si_LK"/> - <append-configuration-property name="runtime.locales" value="sk"/> - <append-configuration-property name="runtime.locales" value="sk_SK"/> - <append-configuration-property name="runtime.locales" value="sl"/> - <append-configuration-property name="runtime.locales" value="sl_SI"/> - <append-configuration-property name="runtime.locales" value="so"/> - <append-configuration-property name="runtime.locales" value="so_DJ"/> - <append-configuration-property name="runtime.locales" value="so_ET"/> - <append-configuration-property name="runtime.locales" value="so_KE"/> - <append-configuration-property name="runtime.locales" value="so_SO"/> - <append-configuration-property name="runtime.locales" value="sq"/> - <append-configuration-property name="runtime.locales" value="sq_AL"/> - <append-configuration-property name="runtime.locales" value="sr"/> - <append-configuration-property name="runtime.locales" value="sr_BA"/> - <append-configuration-property name="runtime.locales" value="sr_CS"/> - <append-configuration-property name="runtime.locales" value="sr_Cyrl"/> - <append-configuration-property name="runtime.locales" value="sr_Cyrl_BA"/> - <append-configuration-property name="runtime.locales" value="sr_Cyrl_CS"/> - <append-configuration-property name="runtime.locales" value="sr_Cyrl_ME"/> - <append-configuration-property name="runtime.locales" value="sr_Cyrl_RS"/> - <append-configuration-property name="runtime.locales" value="sr_Cyrl_YU"/> - <append-configuration-property name="runtime.locales" value="sr_Latn"/> - <append-configuration-property name="runtime.locales" value="sr_Latn_BA"/> - <append-configuration-property name="runtime.locales" value="sr_Latn_CS"/> - <append-configuration-property name="runtime.locales" value="sr_Latn_ME"/> - <append-configuration-property name="runtime.locales" value="sr_Latn_RS"/> - <append-configuration-property name="runtime.locales" value="sr_Latn_YU"/> - <append-configuration-property name="runtime.locales" value="sr_ME"/> - <append-configuration-property name="runtime.locales" value="sr_RS"/> - <append-configuration-property name="runtime.locales" value="sr_YU"/> - <append-configuration-property name="runtime.locales" value="ss"/> - <append-configuration-property name="runtime.locales" value="ss_SZ"/> - <append-configuration-property name="runtime.locales" value="ss_ZA"/> - <append-configuration-property name="runtime.locales" value="st"/> - <append-configuration-property name="runtime.locales" value="st_LS"/> - <append-configuration-property name="runtime.locales" value="st_ZA"/> - <append-configuration-property name="runtime.locales" value="sv"/> - <append-configuration-property name="runtime.locales" value="sv_FI"/> - <append-configuration-property name="runtime.locales" value="sv_SE"/> - <append-configuration-property name="runtime.locales" value="sw"/> - <append-configuration-property name="runtime.locales" value="sw_KE"/> - <append-configuration-property name="runtime.locales" value="sw_TZ"/> - <append-configuration-property name="runtime.locales" value="syr"/> - <append-configuration-property name="runtime.locales" value="syr_SY"/> - <append-configuration-property name="runtime.locales" value="ta"/> - <append-configuration-property name="runtime.locales" value="ta_IN"/> - <append-configuration-property name="runtime.locales" value="te"/> - <append-configuration-property name="runtime.locales" value="te_IN"/> - <append-configuration-property name="runtime.locales" value="tg"/> - <append-configuration-property name="runtime.locales" value="tg_Cyrl"/> - <append-configuration-property name="runtime.locales" value="tg_Cyrl_TJ"/> - <append-configuration-property name="runtime.locales" value="tg_TJ"/> - <append-configuration-property name="runtime.locales" value="th"/> - <append-configuration-property name="runtime.locales" value="th_TH"/> - <append-configuration-property name="runtime.locales" value="ti"/> - <append-configuration-property name="runtime.locales" value="ti_ER"/> - <append-configuration-property name="runtime.locales" value="ti_ET"/> - <append-configuration-property name="runtime.locales" value="tig"/> - <append-configuration-property name="runtime.locales" value="tig_ER"/> - <append-configuration-property name="runtime.locales" value="tl"/> - <append-configuration-property name="runtime.locales" value="tn"/> - <append-configuration-property name="runtime.locales" value="tn_ZA"/> - <append-configuration-property name="runtime.locales" value="to"/> - <append-configuration-property name="runtime.locales" value="to_TO"/> - <append-configuration-property name="runtime.locales" value="tr"/> - <append-configuration-property name="runtime.locales" value="tr_TR"/> - <append-configuration-property name="runtime.locales" value="trv"/> - <append-configuration-property name="runtime.locales" value="ts"/> - <append-configuration-property name="runtime.locales" value="ts_ZA"/> - <append-configuration-property name="runtime.locales" value="tt"/> - <append-configuration-property name="runtime.locales" value="tt_RU"/> - <append-configuration-property name="runtime.locales" value="ug"/> - <append-configuration-property name="runtime.locales" value="ug_Arab"/> - <append-configuration-property name="runtime.locales" value="ug_Arab_CN"/> - <append-configuration-property name="runtime.locales" value="ug_CN"/> - <append-configuration-property name="runtime.locales" value="uk"/> - <append-configuration-property name="runtime.locales" value="uk_UA"/> - <append-configuration-property name="runtime.locales" value="ur"/> - <append-configuration-property name="runtime.locales" value="ur_IN"/> - <append-configuration-property name="runtime.locales" value="ur_PK"/> - <append-configuration-property name="runtime.locales" value="uz"/> - <append-configuration-property name="runtime.locales" value="uz_AF"/> - <append-configuration-property name="runtime.locales" value="uz_Arab"/> - <append-configuration-property name="runtime.locales" value="uz_Arab_AF"/> - <append-configuration-property name="runtime.locales" value="uz_Cyrl"/> - <append-configuration-property name="runtime.locales" value="uz_Cyrl_UZ"/> - <append-configuration-property name="runtime.locales" value="uz_Latn"/> - <append-configuration-property name="runtime.locales" value="uz_Latn_UZ"/> - <append-configuration-property name="runtime.locales" value="uz_UZ"/> - <append-configuration-property name="runtime.locales" value="ve"/> - <append-configuration-property name="runtime.locales" value="ve_ZA"/> - <append-configuration-property name="runtime.locales" value="vi"/> - <append-configuration-property name="runtime.locales" value="vi_VN"/> - <append-configuration-property name="runtime.locales" value="wal"/> - <append-configuration-property name="runtime.locales" value="wal_ET"/> - <append-configuration-property name="runtime.locales" value="wo"/> - <append-configuration-property name="runtime.locales" value="wo_Latn"/> - <append-configuration-property name="runtime.locales" value="wo_Latn_SN"/> - <append-configuration-property name="runtime.locales" value="wo_SN"/> - <append-configuration-property name="runtime.locales" value="xh"/> - <append-configuration-property name="runtime.locales" value="xh_ZA"/> - <append-configuration-property name="runtime.locales" value="yo"/> - <append-configuration-property name="runtime.locales" value="yo_NG"/> - <append-configuration-property name="runtime.locales" value="zh"/> - <append-configuration-property name="runtime.locales" value="zh_CN"/> - <append-configuration-property name="runtime.locales" value="zh_Hans"/> - <append-configuration-property name="runtime.locales" value="zh_Hans_CN"/> - <append-configuration-property name="runtime.locales" value="zh_Hans_HK"/> - <append-configuration-property name="runtime.locales" value="zh_Hans_MO"/> - <append-configuration-property name="runtime.locales" value="zh_Hans_SG"/> - <append-configuration-property name="runtime.locales" value="zh_Hant"/> - <append-configuration-property name="runtime.locales" value="zh_Hant_HK"/> - <append-configuration-property name="runtime.locales" value="zh_Hant_MO"/> - <append-configuration-property name="runtime.locales" value="zh_Hant_TW"/> - <append-configuration-property name="runtime.locales" value="zh_HK"/> - <append-configuration-property name="runtime.locales" value="zh_MO"/> - <append-configuration-property name="runtime.locales" value="zh_SG"/> - <append-configuration-property name="runtime.locales" value="zh_TW"/> - <append-configuration-property name="runtime.locales" value="zu"/> - <append-configuration-property name="runtime.locales" value="zu_ZA"/> + <extend-configuration-property name="runtime.locales" value="en_VI"/> + <extend-configuration-property name="runtime.locales" value="en_ZA"/> + <extend-configuration-property name="runtime.locales" value="en_ZW"/> + <extend-configuration-property name="runtime.locales" value="eo"/> + <extend-configuration-property name="runtime.locales" value="es"/> + <extend-configuration-property name="runtime.locales" value="es_AR"/> + <extend-configuration-property name="runtime.locales" value="es_BO"/> + <extend-configuration-property name="runtime.locales" value="es_CL"/> + <extend-configuration-property name="runtime.locales" value="es_CO"/> + <extend-configuration-property name="runtime.locales" value="es_CR"/> + <extend-configuration-property name="runtime.locales" value="es_DO"/> + <extend-configuration-property name="runtime.locales" value="es_EC"/> + <extend-configuration-property name="runtime.locales" value="es_ES"/> + <extend-configuration-property name="runtime.locales" value="es_GT"/> + <extend-configuration-property name="runtime.locales" value="es_HN"/> + <extend-configuration-property name="runtime.locales" value="es_MX"/> + <extend-configuration-property name="runtime.locales" value="es_NI"/> + <extend-configuration-property name="runtime.locales" value="es_PA"/> + <extend-configuration-property name="runtime.locales" value="es_PE"/> + <extend-configuration-property name="runtime.locales" value="es_PR"/> + <extend-configuration-property name="runtime.locales" value="es_PY"/> + <extend-configuration-property name="runtime.locales" value="es_SV"/> + <extend-configuration-property name="runtime.locales" value="es_US"/> + <extend-configuration-property name="runtime.locales" value="es_UY"/> + <extend-configuration-property name="runtime.locales" value="es_VE"/> + <extend-configuration-property name="runtime.locales" value="et"/> + <extend-configuration-property name="runtime.locales" value="et_EE"/> + <extend-configuration-property name="runtime.locales" value="eu"/> + <extend-configuration-property name="runtime.locales" value="eu_ES"/> + <extend-configuration-property name="runtime.locales" value="fa"/> + <extend-configuration-property name="runtime.locales" value="fa_AF"/> + <extend-configuration-property name="runtime.locales" value="fa_IR"/> + <extend-configuration-property name="runtime.locales" value="fi"/> + <extend-configuration-property name="runtime.locales" value="fi_FI"/> + <extend-configuration-property name="runtime.locales" value="fil"/> + <extend-configuration-property name="runtime.locales" value="fil_PH"/> + <extend-configuration-property name="runtime.locales" value="fo"/> + <extend-configuration-property name="runtime.locales" value="fo_FO"/> + <extend-configuration-property name="runtime.locales" value="fr"/> + <extend-configuration-property name="runtime.locales" value="fr_BE"/> + <extend-configuration-property name="runtime.locales" value="fr_CA"/> + <extend-configuration-property name="runtime.locales" value="fr_CH"/> + <extend-configuration-property name="runtime.locales" value="fr_FR"/> + <extend-configuration-property name="runtime.locales" value="fr_LU"/> + <extend-configuration-property name="runtime.locales" value="fr_MC"/> + <extend-configuration-property name="runtime.locales" value="fr_SN"/> + <extend-configuration-property name="runtime.locales" value="fur"/> + <extend-configuration-property name="runtime.locales" value="fur_IT"/> + <extend-configuration-property name="runtime.locales" value="ga"/> + <extend-configuration-property name="runtime.locales" value="gaa"/> + <extend-configuration-property name="runtime.locales" value="gaa_GH"/> + <extend-configuration-property name="runtime.locales" value="ga_IE"/> + <extend-configuration-property name="runtime.locales" value="gez"/> + <extend-configuration-property name="runtime.locales" value="gez_ER"/> + <extend-configuration-property name="runtime.locales" value="gez_ET"/> + <extend-configuration-property name="runtime.locales" value="gl"/> + <extend-configuration-property name="runtime.locales" value="gl_ES"/> + <extend-configuration-property name="runtime.locales" value="gu"/> + <extend-configuration-property name="runtime.locales" value="gu_IN"/> + <extend-configuration-property name="runtime.locales" value="gv"/> + <extend-configuration-property name="runtime.locales" value="gv_GB"/> + <extend-configuration-property name="runtime.locales" value="ha"/> + <extend-configuration-property name="runtime.locales" value="ha_Arab"/> + <extend-configuration-property name="runtime.locales" value="ha_Arab_NG"/> + <extend-configuration-property name="runtime.locales" value="ha_Arab_SD"/> + <extend-configuration-property name="runtime.locales" value="ha_GH"/> + <extend-configuration-property name="runtime.locales" value="ha_Latn"/> + <extend-configuration-property name="runtime.locales" value="ha_Latn_GH"/> + <extend-configuration-property name="runtime.locales" value="ha_Latn_NE"/> + <extend-configuration-property name="runtime.locales" value="ha_Latn_NG"/> + <extend-configuration-property name="runtime.locales" value="ha_NE"/> + <extend-configuration-property name="runtime.locales" value="ha_NG"/> + <extend-configuration-property name="runtime.locales" value="ha_SD"/> + <extend-configuration-property name="runtime.locales" value="haw"/> + <extend-configuration-property name="runtime.locales" value="haw_US"/> + <extend-configuration-property name="runtime.locales" value="he"/> + <extend-configuration-property name="runtime.locales" value="he_IL"/> + <extend-configuration-property name="runtime.locales" value="hi"/> + <extend-configuration-property name="runtime.locales" value="hi_IN"/> + <extend-configuration-property name="runtime.locales" value="hr"/> + <extend-configuration-property name="runtime.locales" value="hr_HR"/> + <extend-configuration-property name="runtime.locales" value="hu"/> + <extend-configuration-property name="runtime.locales" value="hu_HU"/> + <extend-configuration-property name="runtime.locales" value="hy"/> + <extend-configuration-property name="runtime.locales" value="hy_AM"/> + <extend-configuration-property name="runtime.locales" value="hy_AM_REVISED"/> + <extend-configuration-property name="runtime.locales" value="ia"/> + <extend-configuration-property name="runtime.locales" value="id"/> + <extend-configuration-property name="runtime.locales" value="id_ID"/> + <extend-configuration-property name="runtime.locales" value="ig"/> + <extend-configuration-property name="runtime.locales" value="ig_NG"/> + <extend-configuration-property name="runtime.locales" value="ii"/> + <extend-configuration-property name="runtime.locales" value="ii_CN"/> + <extend-configuration-property name="runtime.locales" value="in"/> + <extend-configuration-property name="runtime.locales" value="is"/> + <extend-configuration-property name="runtime.locales" value="is_IS"/> + <extend-configuration-property name="runtime.locales" value="it"/> + <extend-configuration-property name="runtime.locales" value="it_CH"/> + <extend-configuration-property name="runtime.locales" value="it_IT"/> + <extend-configuration-property name="runtime.locales" value="iu"/> + <extend-configuration-property name="runtime.locales" value="iw"/> + <extend-configuration-property name="runtime.locales" value="ja"/> + <extend-configuration-property name="runtime.locales" value="ja_JP"/> + <extend-configuration-property name="runtime.locales" value="ka"/> + <extend-configuration-property name="runtime.locales" value="ka_GE"/> + <extend-configuration-property name="runtime.locales" value="kaj"/> + <extend-configuration-property name="runtime.locales" value="kaj_NG"/> + <extend-configuration-property name="runtime.locales" value="kam"/> + <extend-configuration-property name="runtime.locales" value="kam_KE"/> + <extend-configuration-property name="runtime.locales" value="kcg"/> + <extend-configuration-property name="runtime.locales" value="kcg_NG"/> + <extend-configuration-property name="runtime.locales" value="kfo"/> + <extend-configuration-property name="runtime.locales" value="kfo_CI"/> + <extend-configuration-property name="runtime.locales" value="kk"/> + <extend-configuration-property name="runtime.locales" value="kk_Cyrl"/> + <extend-configuration-property name="runtime.locales" value="kk_Cyrl_KZ"/> + <extend-configuration-property name="runtime.locales" value="kk_KZ"/> + <extend-configuration-property name="runtime.locales" value="kl"/> + <extend-configuration-property name="runtime.locales" value="kl_GL"/> + <extend-configuration-property name="runtime.locales" value="km"/> + <extend-configuration-property name="runtime.locales" value="km_KH"/> + <extend-configuration-property name="runtime.locales" value="kn"/> + <extend-configuration-property name="runtime.locales" value="kn_IN"/> + <extend-configuration-property name="runtime.locales" value="ko"/> + <extend-configuration-property name="runtime.locales" value="kok"/> + <extend-configuration-property name="runtime.locales" value="kok_IN"/> + <extend-configuration-property name="runtime.locales" value="ko_KR"/> + <extend-configuration-property name="runtime.locales" value="kpe"/> + <extend-configuration-property name="runtime.locales" value="kpe_GN"/> + <extend-configuration-property name="runtime.locales" value="kpe_LR"/> + <extend-configuration-property name="runtime.locales" value="ku"/> + <extend-configuration-property name="runtime.locales" value="ku_Arab"/> + <extend-configuration-property name="runtime.locales" value="ku_Latn"/> + <extend-configuration-property name="runtime.locales" value="ku_Latn_TR"/> + <extend-configuration-property name="runtime.locales" value="ku_TR"/> + <extend-configuration-property name="runtime.locales" value="kw"/> + <extend-configuration-property name="runtime.locales" value="kw_GB"/> + <extend-configuration-property name="runtime.locales" value="ky"/> + <extend-configuration-property name="runtime.locales" value="ky_KG"/> + <extend-configuration-property name="runtime.locales" value="ln"/> + <extend-configuration-property name="runtime.locales" value="ln_CD"/> + <extend-configuration-property name="runtime.locales" value="ln_CG"/> + <extend-configuration-property name="runtime.locales" value="lo"/> + <extend-configuration-property name="runtime.locales" value="lo_LA"/> + <extend-configuration-property name="runtime.locales" value="lt"/> + <extend-configuration-property name="runtime.locales" value="lt_LT"/> + <extend-configuration-property name="runtime.locales" value="lv"/> + <extend-configuration-property name="runtime.locales" value="lv_LV"/> + <extend-configuration-property name="runtime.locales" value="mk"/> + <extend-configuration-property name="runtime.locales" value="mk_MK"/> + <extend-configuration-property name="runtime.locales" value="ml"/> + <extend-configuration-property name="runtime.locales" value="ml_IN"/> + <extend-configuration-property name="runtime.locales" value="mn"/> + <extend-configuration-property name="runtime.locales" value="mn_CN"/> + <extend-configuration-property name="runtime.locales" value="mn_Cyrl"/> + <extend-configuration-property name="runtime.locales" value="mn_Cyrl_MN"/> + <extend-configuration-property name="runtime.locales" value="mn_MN"/> + <extend-configuration-property name="runtime.locales" value="mn_Mong"/> + <extend-configuration-property name="runtime.locales" value="mn_Mong_CN"/> + <extend-configuration-property name="runtime.locales" value="mo"/> + <extend-configuration-property name="runtime.locales" value="mr"/> + <extend-configuration-property name="runtime.locales" value="mr_IN"/> + <extend-configuration-property name="runtime.locales" value="ms"/> + <extend-configuration-property name="runtime.locales" value="ms_BN"/> + <extend-configuration-property name="runtime.locales" value="ms_MY"/> + <extend-configuration-property name="runtime.locales" value="mt"/> + <extend-configuration-property name="runtime.locales" value="mt_MT"/> + <extend-configuration-property name="runtime.locales" value="my"/> + <extend-configuration-property name="runtime.locales" value="my_MM"/> + <extend-configuration-property name="runtime.locales" value="nb"/> + <extend-configuration-property name="runtime.locales" value="nb_NO"/> + <extend-configuration-property name="runtime.locales" value="ne"/> + <extend-configuration-property name="runtime.locales" value="ne_IN"/> + <extend-configuration-property name="runtime.locales" value="ne_NP"/> + <extend-configuration-property name="runtime.locales" value="nl"/> + <extend-configuration-property name="runtime.locales" value="nl_BE"/> + <extend-configuration-property name="runtime.locales" value="nl_NL"/> + <extend-configuration-property name="runtime.locales" value="nn"/> + <extend-configuration-property name="runtime.locales" value="nn_NO"/> + <extend-configuration-property name="runtime.locales" value="no"/> + <extend-configuration-property name="runtime.locales" value="nr"/> + <extend-configuration-property name="runtime.locales" value="nr_ZA"/> + <extend-configuration-property name="runtime.locales" value="nso"/> + <extend-configuration-property name="runtime.locales" value="nso_ZA"/> + <extend-configuration-property name="runtime.locales" value="ny"/> + <extend-configuration-property name="runtime.locales" value="ny_MW"/> + <extend-configuration-property name="runtime.locales" value="om"/> + <extend-configuration-property name="runtime.locales" value="om_ET"/> + <extend-configuration-property name="runtime.locales" value="om_KE"/> + <extend-configuration-property name="runtime.locales" value="or"/> + <extend-configuration-property name="runtime.locales" value="or_IN"/> + <extend-configuration-property name="runtime.locales" value="pa"/> + <extend-configuration-property name="runtime.locales" value="pa_Arab"/> + <extend-configuration-property name="runtime.locales" value="pa_Arab_PK"/> + <extend-configuration-property name="runtime.locales" value="pa_Guru"/> + <extend-configuration-property name="runtime.locales" value="pa_Guru_IN"/> + <extend-configuration-property name="runtime.locales" value="pa_IN"/> + <extend-configuration-property name="runtime.locales" value="pa_PK"/> + <extend-configuration-property name="runtime.locales" value="pl"/> + <extend-configuration-property name="runtime.locales" value="pl_PL"/> + <extend-configuration-property name="runtime.locales" value="ps"/> + <extend-configuration-property name="runtime.locales" value="ps_AF"/> + <extend-configuration-property name="runtime.locales" value="pt"/> + <extend-configuration-property name="runtime.locales" value="pt_BR"/> + <extend-configuration-property name="runtime.locales" value="pt_PT"/> + <extend-configuration-property name="runtime.locales" value="ro"/> + <extend-configuration-property name="runtime.locales" value="ro_MD"/> + <extend-configuration-property name="runtime.locales" value="root"/> + <extend-configuration-property name="runtime.locales" value="ro_RO"/> + <extend-configuration-property name="runtime.locales" value="ru"/> + <extend-configuration-property name="runtime.locales" value="ru_RU"/> + <extend-configuration-property name="runtime.locales" value="ru_UA"/> + <extend-configuration-property name="runtime.locales" value="rw"/> + <extend-configuration-property name="runtime.locales" value="rw_RW"/> + <extend-configuration-property name="runtime.locales" value="sa"/> + <extend-configuration-property name="runtime.locales" value="sa_IN"/> + <extend-configuration-property name="runtime.locales" value="se"/> + <extend-configuration-property name="runtime.locales" value="se_FI"/> + <extend-configuration-property name="runtime.locales" value="se_NO"/> + <extend-configuration-property name="runtime.locales" value="sh"/> + <extend-configuration-property name="runtime.locales" value="sh_BA"/> + <extend-configuration-property name="runtime.locales" value="sh_CS"/> + <extend-configuration-property name="runtime.locales" value="sh_YU"/> + <extend-configuration-property name="runtime.locales" value="si"/> + <extend-configuration-property name="runtime.locales" value="sid"/> + <extend-configuration-property name="runtime.locales" value="sid_ET"/> + <extend-configuration-property name="runtime.locales" value="si_LK"/> + <extend-configuration-property name="runtime.locales" value="sk"/> + <extend-configuration-property name="runtime.locales" value="sk_SK"/> + <extend-configuration-property name="runtime.locales" value="sl"/> + <extend-configuration-property name="runtime.locales" value="sl_SI"/> + <extend-configuration-property name="runtime.locales" value="so"/> + <extend-configuration-property name="runtime.locales" value="so_DJ"/> + <extend-configuration-property name="runtime.locales" value="so_ET"/> + <extend-configuration-property name="runtime.locales" value="so_KE"/> + <extend-configuration-property name="runtime.locales" value="so_SO"/> + <extend-configuration-property name="runtime.locales" value="sq"/> + <extend-configuration-property name="runtime.locales" value="sq_AL"/> + <extend-configuration-property name="runtime.locales" value="sr"/> + <extend-configuration-property name="runtime.locales" value="sr_BA"/> + <extend-configuration-property name="runtime.locales" value="sr_CS"/> + <extend-configuration-property name="runtime.locales" value="sr_Cyrl"/> + <extend-configuration-property name="runtime.locales" value="sr_Cyrl_BA"/> + <extend-configuration-property name="runtime.locales" value="sr_Cyrl_CS"/> + <extend-configuration-property name="runtime.locales" value="sr_Cyrl_ME"/> + <extend-configuration-property name="runtime.locales" value="sr_Cyrl_RS"/> + <extend-configuration-property name="runtime.locales" value="sr_Cyrl_YU"/> + <extend-configuration-property name="runtime.locales" value="sr_Latn"/> + <extend-configuration-property name="runtime.locales" value="sr_Latn_BA"/> + <extend-configuration-property name="runtime.locales" value="sr_Latn_CS"/> + <extend-configuration-property name="runtime.locales" value="sr_Latn_ME"/> + <extend-configuration-property name="runtime.locales" value="sr_Latn_RS"/> + <extend-configuration-property name="runtime.locales" value="sr_Latn_YU"/> + <extend-configuration-property name="runtime.locales" value="sr_ME"/> + <extend-configuration-property name="runtime.locales" value="sr_RS"/> + <extend-configuration-property name="runtime.locales" value="sr_YU"/> + <extend-configuration-property name="runtime.locales" value="ss"/> + <extend-configuration-property name="runtime.locales" value="ss_SZ"/> + <extend-configuration-property name="runtime.locales" value="ss_ZA"/> + <extend-configuration-property name="runtime.locales" value="st"/> + <extend-configuration-property name="runtime.locales" value="st_LS"/> + <extend-configuration-property name="runtime.locales" value="st_ZA"/> + <extend-configuration-property name="runtime.locales" value="sv"/> + <extend-configuration-property name="runtime.locales" value="sv_FI"/> + <extend-configuration-property name="runtime.locales" value="sv_SE"/> + <extend-configuration-property name="runtime.locales" value="sw"/> + <extend-configuration-property name="runtime.locales" value="sw_KE"/> + <extend-configuration-property name="runtime.locales" value="sw_TZ"/> + <extend-configuration-property name="runtime.locales" value="syr"/> + <extend-configuration-property name="runtime.locales" value="syr_SY"/> + <extend-configuration-property name="runtime.locales" value="ta"/> + <extend-configuration-property name="runtime.locales" value="ta_IN"/> + <extend-configuration-property name="runtime.locales" value="te"/> + <extend-configuration-property name="runtime.locales" value="te_IN"/> + <extend-configuration-property name="runtime.locales" value="tg"/> + <extend-configuration-property name="runtime.locales" value="tg_Cyrl"/> + <extend-configuration-property name="runtime.locales" value="tg_Cyrl_TJ"/> + <extend-configuration-property name="runtime.locales" value="tg_TJ"/> + <extend-configuration-property name="runtime.locales" value="th"/> + <extend-configuration-property name="runtime.locales" value="th_TH"/> + <extend-configuration-property name="runtime.locales" value="ti"/> + <extend-configuration-property name="runtime.locales" value="ti_ER"/> + <extend-configuration-property name="runtime.locales" value="ti_ET"/> + <extend-configuration-property name="runtime.locales" value="tig"/> + <extend-configuration-property name="runtime.locales" value="tig_ER"/> + <extend-configuration-property name="runtime.locales" value="tl"/> + <extend-configuration-property name="runtime.locales" value="tn"/> + <extend-configuration-property name="runtime.locales" value="tn_ZA"/> + <extend-configuration-property name="runtime.locales" value="to"/> + <extend-configuration-property name="runtime.locales" value="to_TO"/> + <extend-configuration-property name="runtime.locales" value="tr"/> + <extend-configuration-property name="runtime.locales" value="tr_TR"/> + <extend-configuration-property name="runtime.locales" value="trv"/> + <extend-configuration-property name="runtime.locales" value="ts"/> + <extend-configuration-property name="runtime.locales" value="ts_ZA"/> + <extend-configuration-property name="runtime.locales" value="tt"/> + <extend-configuration-property name="runtime.locales" value="tt_RU"/> + <extend-configuration-property name="runtime.locales" value="ug"/> + <extend-configuration-property name="runtime.locales" value="ug_Arab"/> + <extend-configuration-property name="runtime.locales" value="ug_Arab_CN"/> + <extend-configuration-property name="runtime.locales" value="ug_CN"/> + <extend-configuration-property name="runtime.locales" value="uk"/> + <extend-configuration-property name="runtime.locales" value="uk_UA"/> + <extend-configuration-property name="runtime.locales" value="ur"/> + <extend-configuration-property name="runtime.locales" value="ur_IN"/> + <extend-configuration-property name="runtime.locales" value="ur_PK"/> + <extend-configuration-property name="runtime.locales" value="uz"/> + <extend-configuration-property name="runtime.locales" value="uz_AF"/> + <extend-configuration-property name="runtime.locales" value="uz_Arab"/> + <extend-configuration-property name="runtime.locales" value="uz_Arab_AF"/> + <extend-configuration-property name="runtime.locales" value="uz_Cyrl"/> + <extend-configuration-property name="runtime.locales" value="uz_Cyrl_UZ"/> + <extend-configuration-property name="runtime.locales" value="uz_Latn"/> + <extend-configuration-property name="runtime.locales" value="uz_Latn_UZ"/> + <extend-configuration-property name="runtime.locales" value="uz_UZ"/> + <extend-configuration-property name="runtime.locales" value="ve"/> + <extend-configuration-property name="runtime.locales" value="ve_ZA"/> + <extend-configuration-property name="runtime.locales" value="vi"/> + <extend-configuration-property name="runtime.locales" value="vi_VN"/> + <extend-configuration-property name="runtime.locales" value="wal"/> + <extend-configuration-property name="runtime.locales" value="wal_ET"/> + <extend-configuration-property name="runtime.locales" value="wo"/> + <extend-configuration-property name="runtime.locales" value="wo_Latn"/> + <extend-configuration-property name="runtime.locales" value="wo_Latn_SN"/> + <extend-configuration-property name="runtime.locales" value="wo_SN"/> + <extend-configuration-property name="runtime.locales" value="xh"/> + <extend-configuration-property name="runtime.locales" value="xh_ZA"/> + <extend-configuration-property name="runtime.locales" value="yo"/> + <extend-configuration-property name="runtime.locales" value="yo_NG"/> + <extend-configuration-property name="runtime.locales" value="zh"/> + <extend-configuration-property name="runtime.locales" value="zh_CN"/> + <extend-configuration-property name="runtime.locales" value="zh_Hans"/> + <extend-configuration-property name="runtime.locales" value="zh_Hans_CN"/> + <extend-configuration-property name="runtime.locales" value="zh_Hans_HK"/> + <extend-configuration-property name="runtime.locales" value="zh_Hans_MO"/> + <extend-configuration-property name="runtime.locales" value="zh_Hans_SG"/> + <extend-configuration-property name="runtime.locales" value="zh_Hant"/> + <extend-configuration-property name="runtime.locales" value="zh_Hant_HK"/> + <extend-configuration-property name="runtime.locales" value="zh_Hant_MO"/> + <extend-configuration-property name="runtime.locales" value="zh_Hant_TW"/> + <extend-configuration-property name="runtime.locales" value="zh_HK"/> + <extend-configuration-property name="runtime.locales" value="zh_MO"/> + <extend-configuration-property name="runtime.locales" value="zh_SG"/> + <extend-configuration-property name="runtime.locales" value="zh_TW"/> + <extend-configuration-property name="runtime.locales" value="zu"/> + <extend-configuration-property name="runtime.locales" value="zu_ZA"/> </module>
diff --git a/user/src/com/google/gwt/i18n/I18N.gwt.xml b/user/src/com/google/gwt/i18n/I18N.gwt.xml index 24202d8..9ce67a7 100644 --- a/user/src/com/google/gwt/i18n/I18N.gwt.xml +++ b/user/src/com/google/gwt/i18n/I18N.gwt.xml
@@ -89,5 +89,6 @@ currency data will support runtime locales - everything else will just reference the compile-time locale set in the "locale" property. --> + <define-configuration-property name="runtime.locales" is-multi-valued="true"/> <set-configuration-property name="runtime.locales" value=""/> </module>
diff --git a/user/src/com/google/gwt/i18n/rebind/LocaleUtils.java b/user/src/com/google/gwt/i18n/rebind/LocaleUtils.java index d399cc1..36425c4 100644 --- a/user/src/com/google/gwt/i18n/rebind/LocaleUtils.java +++ b/user/src/com/google/gwt/i18n/rebind/LocaleUtils.java
@@ -16,7 +16,9 @@ package com.google.gwt.i18n.rebind; import com.google.gwt.core.ext.BadPropertyValueException; +import com.google.gwt.core.ext.ConfigurationProperty; import com.google.gwt.core.ext.PropertyOracle; +import com.google.gwt.core.ext.SelectionProperty; import com.google.gwt.core.ext.TreeLogger; import com.google.gwt.i18n.server.GwtLocaleFactoryImpl; import com.google.gwt.i18n.shared.GwtLocale; @@ -24,7 +26,9 @@ import java.util.Collections; import java.util.HashSet; +import java.util.List; import java.util.Set; +import java.util.SortedSet; /** * Utility methods for dealing with locales. @@ -114,7 +118,11 @@ */ public static void init(TreeLogger logger, PropertyOracle propertyOracle) { try { - String localeName = propertyOracle.getPropertyValue(logger, PROP_LOCALE); + SelectionProperty localeProp + = propertyOracle.getSelectionProperty(logger, PROP_LOCALE); + String localeName = localeProp.getCurrentValue(); + SortedSet<String> localeValues = localeProp.getPossibleValues(); + GwtLocale newCompileLocale = factory.fromString(localeName); if (newCompileLocale.equals(compileLocale)) { return; @@ -123,17 +131,16 @@ allLocales.clear(); allCompileLocales.clear(); runtimeLocales.clear(); - String[] localeValues = propertyOracle.getPropertyValueSet(logger, - PROP_LOCALE); - String rtLocaleNames = propertyOracle.getPropertyValue(logger, - PROP_RUNTIME_LOCALES); for (String localeValue : localeValues) { allCompileLocales.add(factory.fromString(localeValue)); } allLocales.addAll(allCompileLocales); - if (rtLocaleNames != null && rtLocaleNames.length() > 0) { - String[] rtLocales = rtLocaleNames.split(","); - for (String rtLocale : rtLocales) { + + ConfigurationProperty prop + = propertyOracle.getConfigurationProperty(PROP_RUNTIME_LOCALES); + List<String> rtLocaleNames = prop.getValues(); + if (rtLocaleNames != null) { + for (String rtLocale : rtLocaleNames) { GwtLocale locale = factory.fromString(rtLocale); // TODO(jat): remove use of labels existingLocales:
diff --git a/user/src/com/google/gwt/i18n/rebind/LocalizableGenerator.java b/user/src/com/google/gwt/i18n/rebind/LocalizableGenerator.java index 64ed8e0..0e3f4fd 100644 --- a/user/src/com/google/gwt/i18n/rebind/LocalizableGenerator.java +++ b/user/src/com/google/gwt/i18n/rebind/LocalizableGenerator.java
@@ -19,6 +19,7 @@ import com.google.gwt.core.ext.Generator; import com.google.gwt.core.ext.GeneratorContext; import com.google.gwt.core.ext.PropertyOracle; +import com.google.gwt.core.ext.SelectionProperty; import com.google.gwt.core.ext.TreeLogger; import com.google.gwt.core.ext.UnableToCompleteException; import com.google.gwt.core.ext.typeinfo.JClassType; @@ -87,7 +88,9 @@ // If the locale is not specified by the user as a request parameter // or via a meta tag, or if the locale is formatted incorrectly, // getPropertyValue() will return "default". - locale = propertyOracle.getPropertyValue(logger, PROP_LOCALE); + SelectionProperty localeProp + = propertyOracle.getSelectionProperty(logger, PROP_LOCALE); + locale = localeProp.getCurrentValue(); } catch (BadPropertyValueException e) { logger.log(TreeLogger.ERROR, "Could not parse specified locale", e); throw new UnableToCompleteException();
diff --git a/user/src/com/google/gwt/junit/JUnitShell.java b/user/src/com/google/gwt/junit/JUnitShell.java index c421faa..2a11a2b 100644 --- a/user/src/com/google/gwt/junit/JUnitShell.java +++ b/user/src/com/google/gwt/junit/JUnitShell.java
@@ -668,8 +668,9 @@ currentModule.clearEntryPoints(); currentModule.addEntryPointTypeName(GWTRunner.class.getName()); // Squirrel away the name of the active module for GWTRunnerGenerator - ConfigurationProperty moduleNameProp = currentModule.getProperties().createConfiguration( - "junit.moduleName"); + ConfigurationProperty moduleNameProp + = currentModule.getProperties().createConfiguration( + "junit.moduleName", false); moduleNameProp.setValue(moduleName); runStyle.maybeCompileModule(syntheticModuleName); }
diff --git a/user/src/com/google/gwt/junit/rebind/GWTRunnerGenerator.java b/user/src/com/google/gwt/junit/rebind/GWTRunnerGenerator.java index 7058dd5..213e514 100644 --- a/user/src/com/google/gwt/junit/rebind/GWTRunnerGenerator.java +++ b/user/src/com/google/gwt/junit/rebind/GWTRunnerGenerator.java
@@ -17,6 +17,7 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.core.ext.BadPropertyValueException; +import com.google.gwt.core.ext.ConfigurationProperty; import com.google.gwt.core.ext.Generator; import com.google.gwt.core.ext.GeneratorContext; import com.google.gwt.core.ext.TreeLogger; @@ -76,8 +77,10 @@ String moduleName; try { - moduleName = context.getPropertyOracle().getPropertyValue(logger, - "junit.moduleName"); + ConfigurationProperty prop + = context.getPropertyOracle().getConfigurationProperty( + "junit.moduleName"); + moduleName = prop.getValues().get(0); } catch (BadPropertyValueException e) { logger.log(TreeLogger.ERROR, "Could not resolve junit.moduleName property", e);
diff --git a/user/src/com/google/gwt/resources/Resources.gwt.xml b/user/src/com/google/gwt/resources/Resources.gwt.xml index 482d555..8e93b39 100644 --- a/user/src/com/google/gwt/resources/Resources.gwt.xml +++ b/user/src/com/google/gwt/resources/Resources.gwt.xml
@@ -56,20 +56,25 @@ </generate-with> <!-- This can be used to disable the use of strongly-named files --> + <define-configuration-property name="ClientBundle.enableRenaming" is-multi-valued="false" /> <set-configuration-property name="ClientBundle.enableRenaming" value="true" /> <!-- This allows merging of CSS rules to be disabled. --> + <define-configuration-property name="CssResource.mergeEnabled" is-multi-valued="false" /> <set-configuration-property name="CssResource.mergeEnabled" value="true" /> <!-- This forces all CssResource accessor functions to have the @Strict --> <!-- annotation. This is intended primarily for application developers and --> <!-- the library test code. --> + <define-configuration-property name="CssResource.strictAccessors" is-multi-valued="false" /> <set-configuration-property name="CssResource.strictAccessors" value="false" /> <!-- This allows the developer to use shorter obfuscated class names. --> <!-- Is is valid to extend this property to use a custom name. --> + <define-configuration-property name="CssResource.obfuscationPrefix" is-multi-valued="false" /> <set-configuration-property name="CssResource.obfuscationPrefix" value="default" /> <!-- This can be used to make CssResource produce human-readable CSS --> + <define-configuration-property name="CssResource.style" is-multi-valued="false" /> <set-configuration-property name="CssResource.style" value="obf" /> </module>
diff --git a/user/src/com/google/gwt/resources/ext/ResourceGeneratorUtil.java b/user/src/com/google/gwt/resources/ext/ResourceGeneratorUtil.java index 9b4e4a4..57a51ab 100644 --- a/user/src/com/google/gwt/resources/ext/ResourceGeneratorUtil.java +++ b/user/src/com/google/gwt/resources/ext/ResourceGeneratorUtil.java
@@ -17,6 +17,7 @@ import com.google.gwt.core.ext.BadPropertyValueException; import com.google.gwt.core.ext.PropertyOracle; +import com.google.gwt.core.ext.SelectionProperty; import com.google.gwt.core.ext.TreeLogger; import com.google.gwt.core.ext.UnableToCompleteException; import com.google.gwt.core.ext.typeinfo.JMethod; @@ -118,7 +119,8 @@ String locale; try { PropertyOracle oracle = context.getGeneratorContext().getPropertyOracle(); - locale = oracle.getPropertyValue(logger, "locale"); + SelectionProperty prop = oracle.getSelectionProperty(logger, "locale"); + locale = prop.getCurrentValue(); } catch (BadPropertyValueException e) { locale = null; }
diff --git a/user/src/com/google/gwt/resources/rebind/context/AbstractClientBundleGenerator.java b/user/src/com/google/gwt/resources/rebind/context/AbstractClientBundleGenerator.java index 65d51cd..6a305f2 100644 --- a/user/src/com/google/gwt/resources/rebind/context/AbstractClientBundleGenerator.java +++ b/user/src/com/google/gwt/resources/rebind/context/AbstractClientBundleGenerator.java
@@ -20,6 +20,7 @@ import com.google.gwt.core.ext.Generator; import com.google.gwt.core.ext.GeneratorContext; import com.google.gwt.core.ext.PropertyOracle; +import com.google.gwt.core.ext.SelectionProperty; import com.google.gwt.core.ext.TreeLogger; import com.google.gwt.core.ext.UnableToCompleteException; import com.google.gwt.core.ext.typeinfo.JClassType; @@ -121,8 +122,14 @@ public void addPermutationAxis(String propertyName) throws BadPropertyValueException { - oracle.getPropertyValue(TreeLogger.NULL, propertyName); - axes.add(propertyName); + // Ensure the property exists and add a permutation axis if the + // property is a deferred binding property. + try { + oracle.getSelectionProperty(TreeLogger.NULL, propertyName).getCurrentValue(); + axes.add(propertyName); + } catch (BadPropertyValueException e) { + oracle.getConfigurationProperty(propertyName).getValues(); + } } } @@ -464,7 +471,8 @@ try { PropertyOracle oracle = context.getGeneratorContext().getPropertyOracle(); for (String property : permutationAxes) { - String value = oracle.getPropertyValue(logger, property); + SelectionProperty prop = oracle.getSelectionProperty(logger, property); + String value = prop.getCurrentValue(); toReturn.append("_" + value); } } catch (BadPropertyValueException e) {
diff --git a/user/src/com/google/gwt/resources/rebind/context/StaticResourceContext.java b/user/src/com/google/gwt/resources/rebind/context/StaticResourceContext.java index a4beb90..047e0dd 100644 --- a/user/src/com/google/gwt/resources/rebind/context/StaticResourceContext.java +++ b/user/src/com/google/gwt/resources/rebind/context/StaticResourceContext.java
@@ -16,6 +16,7 @@ package com.google.gwt.resources.rebind.context; import com.google.gwt.core.ext.BadPropertyValueException; +import com.google.gwt.core.ext.ConfigurationProperty; import com.google.gwt.core.ext.GeneratorContext; import com.google.gwt.core.ext.PropertyOracle; import com.google.gwt.core.ext.TreeLogger; @@ -49,7 +50,9 @@ // See if filename obfuscation should be enabled String enableRenaming = null; try { - enableRenaming = propertyOracle.getPropertyValue(logger, ENABLE_RENAMING); + ConfigurationProperty prop = propertyOracle.getConfigurationProperty( + ENABLE_RENAMING); + enableRenaming = prop.getValues().get(0); } catch (BadPropertyValueException e) { logger.log(TreeLogger.ERROR, "Bad value for " + ENABLE_RENAMING, e); throw new UnableToCompleteException(); @@ -71,7 +74,6 @@ // The name will be MD5.cache.ext outputName = strongName + ".cache." + extension; - } else { outputName = suggestedFileName.substring(suggestedFileName.lastIndexOf('/') + 1); }
diff --git a/user/src/com/google/gwt/resources/rg/CssResourceGenerator.java b/user/src/com/google/gwt/resources/rg/CssResourceGenerator.java index 063c04e..5e32938 100644 --- a/user/src/com/google/gwt/resources/rg/CssResourceGenerator.java +++ b/user/src/com/google/gwt/resources/rg/CssResourceGenerator.java
@@ -16,8 +16,10 @@ package com.google.gwt.resources.rg; import com.google.gwt.core.ext.BadPropertyValueException; +import com.google.gwt.core.ext.ConfigurationProperty; import com.google.gwt.core.ext.Generator; import com.google.gwt.core.ext.PropertyOracle; +import com.google.gwt.core.ext.SelectionProperty; import com.google.gwt.core.ext.TreeLogger; import com.google.gwt.core.ext.UnableToCompleteException; import com.google.gwt.core.ext.typeinfo.JClassType; @@ -219,7 +221,16 @@ } else { try { String propertyName = x.getPropertyName(); - String propValue = oracle.getPropertyValue(logger, propertyName); + String propValue = null; + try { + SelectionProperty selProp + = oracle.getSelectionProperty(logger, propertyName); + propValue = selProp.getCurrentValue(); + } catch (BadPropertyValueException e) { + ConfigurationProperty confProp + = oracle.getConfigurationProperty(propertyName); + propValue = confProp.getValues().get(0); + } /* * If the deferred binding property's value is in the list of values @@ -1229,8 +1240,9 @@ */ try { PropertyOracle propertyOracle = context.getGeneratorContext().getPropertyOracle(); - String propertyValue = propertyOracle.getPropertyValue(logger, + ConfigurationProperty prop = propertyOracle.getConfigurationProperty( "CssResource.strictAccessors"); + String propertyValue = prop.getValues().get(0); if (Boolean.valueOf(propertyValue)) { logger.log(TreeLogger.WARN, "CssResource.forceStrict is true, but " + method.getName() + "() is missing the @Strict annotation."); @@ -1264,16 +1276,20 @@ throws UnableToCompleteException { try { PropertyOracle propertyOracle = context.getGeneratorContext().getPropertyOracle(); - String style = propertyOracle.getPropertyValue(logger, - "CssResource.style").toLowerCase(); + ConfigurationProperty styleProp + = propertyOracle.getConfigurationProperty("CssResource.style"); + String style = styleProp.getValues().get(0); prettyOutput = style.equals("pretty"); - String merge = propertyOracle.getPropertyValue(logger, - "CssResource.mergeEnabled").toLowerCase(); + ConfigurationProperty mergeProp + = propertyOracle.getConfigurationProperty("CssResource.mergeEnabled"); + String merge = mergeProp.getValues().get(0); enableMerge = merge.equals("true"); - classPrefix = propertyOracle.getPropertyValue(logger, - "CssResource.obfuscationPrefix"); + ConfigurationProperty classPrefixProp + = propertyOracle.getConfigurationProperty( + "CssResource.obfuscationPrefix"); + classPrefix = classPrefixProp.getValues().get(0); } catch (BadPropertyValueException e) { logger.log(TreeLogger.WARN, "Unable to query module property", e); throw new UnableToCompleteException();
diff --git a/user/src/com/google/gwt/user/RemoteService.gwt.xml b/user/src/com/google/gwt/user/RemoteService.gwt.xml index a287f28..31baf7c 100644 --- a/user/src/com/google/gwt/user/RemoteService.gwt.xml +++ b/user/src/com/google/gwt/user/RemoteService.gwt.xml
@@ -33,6 +33,7 @@ <!-- If this is ever turned on by default, fix up RPCSuiteWithElision --> + <define-configuration-property name="gwt.elideTypeNamesFromRPC" is-multi-valued="false" /> <set-configuration-property name="gwt.elideTypeNamesFromRPC" value="false" /> <generate-with class="com.google.gwt.user.rebind.rpc.ServiceInterfaceProxyGenerator">
diff --git a/user/src/com/google/gwt/user/rebind/rpc/ProxyCreator.java b/user/src/com/google/gwt/user/rebind/rpc/ProxyCreator.java index 9a80053..84a06bb 100644 --- a/user/src/com/google/gwt/user/rebind/rpc/ProxyCreator.java +++ b/user/src/com/google/gwt/user/rebind/rpc/ProxyCreator.java
@@ -17,7 +17,9 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.core.ext.BadPropertyValueException; +import com.google.gwt.core.ext.ConfigurationProperty; import com.google.gwt.core.ext.GeneratorContext; +import com.google.gwt.core.ext.PropertyOracle; import com.google.gwt.core.ext.TreeLogger; import com.google.gwt.core.ext.UnableToCompleteException; import com.google.gwt.core.ext.linker.GeneratedResource; @@ -230,11 +232,13 @@ Map<JMethod, JMethod> syncMethToAsyncMethMap = rsav.validate(logger, serviceIntf, serviceAsync); + final PropertyOracle propertyOracle = context.getPropertyOracle(); + // Determine the set of serializable types SerializableTypeOracleBuilder typesSentFromBrowserBuilder = new SerializableTypeOracleBuilder( - logger, context.getPropertyOracle(), typeOracle); + logger, propertyOracle, typeOracle); SerializableTypeOracleBuilder typesSentToBrowserBuilder = new SerializableTypeOracleBuilder( - logger, context.getPropertyOracle(), typeOracle); + logger, propertyOracle, typeOracle); try { addRequiredRoots(logger, typeOracle, typesSentFromBrowserBuilder); addRequiredRoots(logger, typeOracle, typesSentToBrowserBuilder); @@ -247,8 +251,10 @@ } try { - elideTypeNames = Boolean.parseBoolean(context.getPropertyOracle().getPropertyValue( - logger, TypeSerializerCreator.GWT_ELIDE_TYPE_NAMES_FROM_RPC)); + ConfigurationProperty prop + = context.getPropertyOracle().getConfigurationProperty( + TypeSerializerCreator.GWT_ELIDE_TYPE_NAMES_FROM_RPC); + elideTypeNames = Boolean.parseBoolean(prop.getValues().get(0)); } catch (BadPropertyValueException e) { logger.log(TreeLogger.ERROR, "Configuration property " + TypeSerializerCreator.GWT_ELIDE_TYPE_NAMES_FROM_RPC
diff --git a/user/src/com/google/gwt/user/rebind/rpc/Shared.java b/user/src/com/google/gwt/user/rebind/rpc/Shared.java index ed1ddd1..3e113d3 100644 --- a/user/src/com/google/gwt/user/rebind/rpc/Shared.java +++ b/user/src/com/google/gwt/user/rebind/rpc/Shared.java
@@ -17,6 +17,7 @@ import com.google.gwt.core.ext.BadPropertyValueException; import com.google.gwt.core.ext.PropertyOracle; +import com.google.gwt.core.ext.SelectionProperty; import com.google.gwt.core.ext.TreeLogger; import com.google.gwt.core.ext.typeinfo.JArrayType; import com.google.gwt.core.ext.typeinfo.JClassType; @@ -133,7 +134,9 @@ private static boolean getBooleanProperty(TreeLogger logger, PropertyOracle propertyOracle, String propertyName, boolean defaultValue) { try { - String propVal = propertyOracle.getPropertyValue(logger, propertyName); + SelectionProperty prop + = propertyOracle.getSelectionProperty(logger, propertyName); + String propVal = prop.getCurrentValue(); if (propVal != null && propVal.length() > 0) { return Boolean.valueOf(propVal); }
diff --git a/user/src/com/google/gwt/user/rebind/rpc/TypeSerializerCreator.java b/user/src/com/google/gwt/user/rebind/rpc/TypeSerializerCreator.java index 125bce6..d92c83a 100644 --- a/user/src/com/google/gwt/user/rebind/rpc/TypeSerializerCreator.java +++ b/user/src/com/google/gwt/user/rebind/rpc/TypeSerializerCreator.java
@@ -19,6 +19,7 @@ import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.core.client.JsArrayString; import com.google.gwt.core.ext.BadPropertyValueException; +import com.google.gwt.core.ext.ConfigurationProperty; import com.google.gwt.core.ext.GeneratorContext; import com.google.gwt.core.ext.TreeLogger; import com.google.gwt.core.ext.UnableToCompleteException; @@ -139,9 +140,10 @@ + " for TypeSerializerCreator createMethodMap"); try { - String value = context.getPropertyOracle().getPropertyValue(logger, - GWT_ELIDE_TYPE_NAMES_FROM_RPC); - elideTypeNames = Boolean.parseBoolean(value); + ConfigurationProperty prop + = context.getPropertyOracle().getConfigurationProperty( + GWT_ELIDE_TYPE_NAMES_FROM_RPC); + elideTypeNames = Boolean.parseBoolean(prop.getValues().get(0)); } catch (BadPropertyValueException e) { logger.log(TreeLogger.ERROR, "The configuration property " + GWT_ELIDE_TYPE_NAMES_FROM_RPC
diff --git a/user/src/com/google/gwt/user/server/rpc/SerializationPolicyLoader.java b/user/src/com/google/gwt/user/server/rpc/SerializationPolicyLoader.java index 6755414..dd4f56e 100644 --- a/user/src/com/google/gwt/user/server/rpc/SerializationPolicyLoader.java +++ b/user/src/com/google/gwt/user/server/rpc/SerializationPolicyLoader.java
@@ -41,11 +41,11 @@ + "[true | false], [true | false], [true | false], [true | false], typeId, signature"; /** - * Returns the serialization policy file name from the from the serialization + * Returns the serialization policy file name from the serialization * policy strong name. * * @param serializationPolicyStrongName the serialization policy strong name - * @return the serialization policy file name from the from the serialization + * @return the serialization policy file name from the serialization * policy strong name */ public static String getSerializationPolicyFileName(
diff --git a/user/test/com/google/gwt/dev/cfg/PropertyTest.java b/user/test/com/google/gwt/dev/cfg/PropertyTest.java index 08f4786..bc85804 100644 --- a/user/test/com/google/gwt/dev/cfg/PropertyTest.java +++ b/user/test/com/google/gwt/dev/cfg/PropertyTest.java
@@ -98,15 +98,15 @@ BindingProperty d = properties.createBinding("deferred"); assertSame(d, properties.createBinding("deferred")); try { - properties.createConfiguration("deferred"); + properties.createConfiguration("deferred", false); fail("Should have thrown an IllegalArgumentException"); } catch (IllegalArgumentException e) { // OK } assertNull(properties.find("config")); - ConfigurationProperty c = properties.createConfiguration("config"); - assertSame(c, properties.createConfiguration("config")); + ConfigurationProperty c = properties.createConfiguration("config", false); + assertSame(c, properties.createConfiguration("config", false)); try { properties.createBinding("config"); fail("Should have thrown an IllegalArgumentException");
diff --git a/user/test/com/google/gwt/i18n/I18NTest_es_AR_runtime.gwt.xml b/user/test/com/google/gwt/i18n/I18NTest_es_AR_runtime.gwt.xml index 9cddf0b..59e730a 100644 --- a/user/test/com/google/gwt/i18n/I18NTest_es_AR_runtime.gwt.xml +++ b/user/test/com/google/gwt/i18n/I18NTest_es_AR_runtime.gwt.xml
@@ -20,6 +20,7 @@ <source path="client"/> <extend-property name="locale" values="es_419"/> <set-property name = "locale" value = "es_419"/> - <set-configuration-property name="runtime.locales" value="es_AR,es_MX"/> + <extend-configuration-property name="runtime.locales" value="es_AR"/> + <extend-configuration-property name="runtime.locales" value="es_MX"/> <public path="public_es_AR"/> </module>
diff --git a/user/test/com/google/gwt/i18n/I18NTest_es_MX_runtime.gwt.xml b/user/test/com/google/gwt/i18n/I18NTest_es_MX_runtime.gwt.xml index 246f5a8..e82fb39 100644 --- a/user/test/com/google/gwt/i18n/I18NTest_es_MX_runtime.gwt.xml +++ b/user/test/com/google/gwt/i18n/I18NTest_es_MX_runtime.gwt.xml
@@ -20,6 +20,7 @@ <source path="client"/> <extend-property name="locale" values="es_419"/> <set-property name = "locale" value = "es_419"/> - <set-configuration-property name="runtime.locales" value="es_AR,es_MX"/> + <extend-configuration-property name="runtime.locales" value="es_AR"/> + <extend-configuration-property name="runtime.locales" value="es_MX"/> <public path="public_es_MX"/> </module>
diff --git a/user/test/com/google/gwt/module/ConfigurationProperties.gwt.xml b/user/test/com/google/gwt/module/ConfigurationProperties.gwt.xml index 0d6a6af..41d90e2 100644 --- a/user/test/com/google/gwt/module/ConfigurationProperties.gwt.xml +++ b/user/test/com/google/gwt/module/ConfigurationProperties.gwt.xml
@@ -13,6 +13,8 @@ <!-- implied. License for the specific language governing permissions and --> <!-- limitations under the License. --> <module> + <define-configuration-property name="testProperty" + is-multi-valued="false" /> <set-configuration-property name="testProperty" value="Hello World!" /> <generate-with
diff --git a/user/test/com/google/gwt/module/rebind/ConfigurationPropertiesGenerator.java b/user/test/com/google/gwt/module/rebind/ConfigurationPropertiesGenerator.java index 9e5fdf4..d34d42b 100644 --- a/user/test/com/google/gwt/module/rebind/ConfigurationPropertiesGenerator.java +++ b/user/test/com/google/gwt/module/rebind/ConfigurationPropertiesGenerator.java
@@ -16,6 +16,7 @@ package com.google.gwt.module.rebind; import com.google.gwt.core.ext.BadPropertyValueException; +import com.google.gwt.core.ext.ConfigurationProperty; import com.google.gwt.core.ext.Generator; import com.google.gwt.core.ext.GeneratorContext; import com.google.gwt.core.ext.TreeLogger; @@ -41,16 +42,17 @@ if (out != null) { String propertyValue; try { - propertyValue = context.getPropertyOracle().getPropertyValue(logger, - "testProperty"); + ConfigurationProperty prop = context.getPropertyOracle(). + getConfigurationProperty("testProperty"); + propertyValue = prop.getValues().get(0); } catch (BadPropertyValueException e) { logger.log(TreeLogger.ERROR, "testProperty not set", e); throw new UnableToCompleteException(); } try { - context.getPropertyOracle().getPropertyValue(TreeLogger.NULL, - "bad_property"); + ConfigurationProperty prop = context.getPropertyOracle(). + getConfigurationProperty("bad_property"); logger.log(TreeLogger.ERROR, "Did not get an exception trying to access fake property"); throw new UnableToCompleteException();