|
- <!--
- 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
-
- 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.
- -->
- <html>
-
- <head>
- <meta http-equiv="Content-Language" content="en-us">
- <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 runtime, or <strong>(b)</strong> (hopefully more often)
- install one or more <code>PropertyHelper</code> Delegates into the <code>PropertyHelper</code>
- active on the current <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>PropertyHelper</code> or not, one or more
- configured implementations of the <code>org.apache.tools.ant.PropertyHelper.Delegate</code>
- interface. A deeper understanding of the API is required here, however, as <code>Delegate</code> is
- a marker interface only: the nested arguments must implement a <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>Attribute</th>
- <th>Description</th>
- <th>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>PropertyHelper</code> implementation
- (assuming <code>MyPropertyHelper extends PropertyHelper</code>):</p>
-
- <pre>
- <componentdef classname="org.example.MyPropertyHelper"
- name="mypropertyhelper"/>
- <propertyhelper>
- <mypropertyhelper/>
- </propertyhelper>
- </pre>
-
- <p>Add a new <code>PropertyEvaluator</code> delegate (assuming <code>MyPropertyEvaluator implements
- PropertyHelper.PropertyEvaluator</code>). Note that <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>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>
|