You can create a "soft dependency" from one configuration variable to another and get the same effect as this code. I don't have the code in front of me right now but there should be some examples in the Configuration classes of the old MXML compiler. In this case library-path would have a soft dependency on target-player.
-Darrell On Wed, Jan 22, 2014 at 11:44 AM, <aha...@apache.org> wrote: > Updated Branches: > refs/heads/develop 8966eda94 -> b5a06269f > > > guarantee that target-player gets processed before library-path otherwise > wrong player gets checked > > > Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo > Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/b5a06269 > Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/b5a06269 > Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/b5a06269 > > Branch: refs/heads/develop > Commit: b5a06269f51aa1843cc6da79dd3a6eb0f4848345 > Parents: 8966eda > Author: Alex Harui <aha...@apache.org> > Authored: Wed Jan 22 16:42:40 2014 +0000 > Committer: Alex Harui <aha...@apache.org> > Committed: Wed Jan 22 16:42:40 2014 +0000 > > ---------------------------------------------------------------------- > .../compiler/config/ConfigurationBuffer.java | 23 ++++++++++++++++++++ > 1 file changed, 23 insertions(+) > ---------------------------------------------------------------------- > > > > http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b5a06269/compiler/src/org/apache/flex/compiler/config/ConfigurationBuffer.java > ---------------------------------------------------------------------- > diff --git > a/compiler/src/org/apache/flex/compiler/config/ConfigurationBuffer.java > b/compiler/src/org/apache/flex/compiler/config/ConfigurationBuffer.java > index b6484fd..f76bf17 100644 > --- a/compiler/src/org/apache/flex/compiler/config/ConfigurationBuffer.java > +++ b/compiler/src/org/apache/flex/compiler/config/ConfigurationBuffer.java > @@ -102,6 +102,8 @@ import com.google.common.collect.ImmutableList; > */ > public final class ConfigurationBuffer > { > + private static final String TARGET_PLAYER = "target-player"; > + > public ConfigurationBuffer(Class<? extends Configuration> configClass) > { > this(configClass, new HashMap<String, String>()); > @@ -714,6 +716,27 @@ public final class ConfigurationBuffer > Set<String> done = new HashSet<String>(); > boolean success = true; > > + // get target-player first because its setting affect expansion > of some > + // tokens later. The varList is populated by getMethods() which > returns > + // the methods in random order and can result in > compiler.library-path being > + // evaluated before target-player and then we end up looking up > the wrong > + // version of playerglobal. > + if (varList.contains(TARGET_PLAYER)) > + { > + varList.remove(TARGET_PLAYER); > + if (varMap.containsKey(TARGET_PLAYER)) > + { > + try > + { > + commitVariable(config, TARGET_PLAYER, done); > + } > + catch (ConfigurationException e) > + { > + problems.add(new ConfigurationProblem(e)); > + success = false; > + } > + } > + } > for (Iterator<String> vars = varList.iterator(); vars.hasNext();) > { > String var = vars.next(); > >