https://issues.apache.org/bugzilla/show_bug.cgi?id=46331
Summary: Get the related Task object from the Condition
implementation object
Product: Ant
Version: 1.7.1
Platform: All
OS/Version: All
Status: NEW
Severity: enhancement
Priority: P2
Component: Core tasks
AssignedTo: [email protected]
ReportedBy: [EMAIL PROTECTED]
When a custom condition is implemented (Condition interface), there is no
direct way to get the related Ant Task.
This is useful - for logging purpose - to link a logged message to the related
task.
In the example below, I want to associated the message logged in the Groovy
script to the waitfor task, because I use XmlLogger to generate my report and
the message must be associated to the task XML element to be properly displayed
in the HTML report.
The workaround consists in setting an id to the waitfor task to be able to get
them through project references.
But, I've read in Ant manual that setting an id for task won't be supported in
Ant future versions:
http://ant.apache.org/manual/using.html#tasks
Example (and workaround):
<waitfor maxwait="${maxwait}" maxwaitunit="${maxwait.unit}"
checkevery="${checkevery}" checkeveryunit="${checkevery.unit}"
timeoutproperty="DataInsWaitDvAvailable.timeout"
id="DataInsWaitDvAvailable_waitfor">
<scriptcondition language="groovy" value="false">
import groovy.sql.Sql
def sql = Sql.newInstance(
"jdbc:oracle:thin:${dbUrl}",
"${dbUserViewer}", "${dbUserViewerPassword}",
"oracle.jdbc.driver.OracleDriver")
def fields = []
def row = sql.firstRow("${sqlQuery}", fields)
def task = project.references.DataInsWaitDvAvailable_waitfor
project.log(task, "Count=${row[0]}
(expected=${expectedCount})", project.MSG_INFO)
if (row[0] == (expectedCount as Integer)) {
self.setValue(true);
} else {
self.setValue(false);
}
</scriptcondition>
</waitfor>
--
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.