| <!DOCTYPE html> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| https://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. |
| --> |
| <html lang="en"> |
| |
| <head> |
| <link rel="stylesheet" type="text/css" href="../stylesheets/style.css"> |
| <title>PropertyHelper Task</title> |
| </head> |
| |
| <body> |
| |
| <h2>PropertyHelper</h2> |
| <p><em>Since Ant 1.8.0</em></p> |
| <h3>Description</h3> |
| <p>This task is provided for the purpose of allowing the user to <strong>(a)</strong> install a |
| different <code>PropertyHelper</code> at run time, or <strong>(b)</strong> (hopefully more often) |
| install one or more <code class="code">PropertyHelper</code> Delegates into |
| the <code class="code">PropertyHelper</code> active on the |
| current <code class="code">Project</code>. This is somewhat advanced Apache Ant usage and assumes a |
| working familiarity with the modern Ant APIs. See the description of |
| Ant's <a href="../properties.html#propertyHelper">Property Helper</a> for more information.</p> |
| |
| <h3>Parameters specified as nested elements</h3> |
| |
| <h4>PropertyHelper</h4> |
| <p>You may specify exactly one configured <code>org.apache.tools.ant.PropertyHelper</code> |
| instance.</p> |
| |
| <h4>PropertyHelper.Delegate</h4> |
| <p>You may specify, either in conjunction with a new <code class="code">PropertyHelper</code> or |
| not, one or more configured implementations of |
| the <code class="code">org.apache.tools.ant.PropertyHelper.Delegate</code> interface. A deeper |
| understanding of the API is required here, however, as <code class="code">Delegate</code> is a |
| marker interface only: the nested arguments must implement a <code class="code">Delegate</code> |
| subinterface in order to do anything meaningful.</p> |
| |
| <h4>delegate</h4> |
| <p>A generic <code><delegate></code> element which can use project references is also |
| provided:</p> |
| |
| <h5>Parameters</h5> |
| <table class="attr"> |
| <tr> |
| <th scope="col">Attribute</th> |
| <th scope="col">Description</th> |
| <th scope="col">Required</th> |
| </tr> |
| <tr> |
| <td>refid</td> |
| <td>The <var>id</var> of a <code>PropertyHelper.Delegate</code> to install.</td> |
| <td>Yes</td> |
| </tr> |
| </table> |
| |
| <h3>Examples</h3> |
| |
| <p>Install a completely different <code class="code">PropertyHelper</code> implementation |
| (assuming <code class="code">MyPropertyHelper extends PropertyHelper</code>):</p> |
| |
| <pre> |
| <componentdef classname="org.example.MyPropertyHelper" |
| name="mypropertyhelper"/> |
| <propertyhelper> |
| <mypropertyhelper/> |
| </propertyhelper> |
| </pre> |
| |
| <p>Add a new <code class="code">PropertyEvaluator</code> delegate |
| (assuming <code class="code">MyPropertyEvaluator implements |
| PropertyHelper.PropertyEvaluator</code>). Note that <code class="code">PropertyHelper</code> uses |
| the configured delegates in LIFO order. I.e. the delegate added by this task will be consulted |
| before any previously defined delegate and in particular before the built-in ones.</p> |
| |
| <pre> |
| <componentdef classname="org.example.MyPropertyEvaluator" |
| name="mypropertyevaluator"/> |
| <propertyhelper> |
| <mypropertyevaluator/> |
| </propertyhelper> |
| </pre> |
| |
| <p>Add a new <code class="code">PropertyEvaluator</code> delegate using the <var>refid</var> |
| syntax:</p> |
| |
| <pre> |
| <typedef classname="org.example.MyPropertyEvaluator" |
| name="mypropertyevaluator"/> |
| <mypropertyevaluator id="evaluator"/> |
| <propertyhelper> |
| <delegate refid="evaluator"/> |
| </propertyhelper> |
| </pre> |
| |
| </body> |
| </html> |