Here's what John and I worked out over IM to get the existing runtime locales support migrated to soft permutations:
- The existing locale property continues to work as it currently does. - The runtime.locales configuration property is eliminated in favor of a runtimeLocale deferred-binding property. - The runtimeLocale property is defined and collapsed by a ModuleDefMutator which also defines additional rebind rules based on the defined locale values. - One or more ModuleDefMutators are installed by a <module-mutator class="Foo" /> which are called before ModuleDef.normalize() - The SelectionProperty interface gains a getCollapsedValues() which gives the values that are equivalent to the value returned by getCurrentValue(). - This allows the runtime performance of the Generators to be optimized. - The locale generators are simplified, removing the runtime locale factory and instead relying on the soft rebind rules created by the ModuleDefMutator. This will increase the size of the permutation-selection matrix, but this could be mitigated by using property-value extensions. In the same way that "es_AR extends es", we might have "chrome extends safari", "iphone extends safari". The value extension work is separate and orthogonal, but plays nicely with the two techniques in http://code.google.com/p/google-web-toolkit/wiki/ControllingPermutationExplosion. Thoughts? -- Bob Vawter Google Web Toolkit Team -- http://groups.google.com/group/Google-Web-Toolkit-Contributors