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();
>
>

Reply via email to