Steve:
Thanks for your informative response and your suspicion that I may have
a problem with the size() of my fileset.
Since I can't seem to find a simple method of trying to test the size of
my fileset, in advance of my call of the sql task, I've now tried to
modify my target to first create a fileset, then created a property
based on a pathcovert of that fileset, and then tried to run the sql
task based on a test of that property. While this looks a little ugly
and kludgey, it was the only way (I thought) to make sure that I was
guaranteed to not run the sql task if the fileset was empty.
My current target that includes the sql task now looks like:
<!-- build.xml snippet starts here -->
<target name="loadStoredProcedures">
<basename property="this.user" file="${this.dir}"/>
<echo message="Loading stored procedures from ${this.dir}."/>
<fileset dir="${this.dir}" id="this.fileset">
<include name="*.sql"/>
<modified>
<param name="cache.cachefile" value="config/.sql${sfx}.properties"/>
</modified>
</fileset>
<!-- The following path convert is a trick to simply set a property -->
<!-- named ${new.files} only if there are any files to be processed -->
<!-- in refid="this.fileset". -->
<pathconvert property="new.files" refid="this.fileset"
setonempty="false" targetos="unix"/>
<if> <isset property="new.files"/>
<then>
<echo message="Property new.files is set to ${new.files}."/>
<sql driver="${jdbc_driver_class}" url="${jdbc_url}"
userid="${this.user}" password="${coral.db.password}"
keepformat="true" delimiter="/" escapeprocessing="false"
print="true"
onerror="continue">
<fileset refid="this.fileset"/>
<classpath>
<pathelement location="${build.dir}/ext/${jdbc.jar}"/>
</classpath>
</sql>
</then>
</if>
</target>
<!-- build.xml snippet ends here -->
I still believe that I am still seeing a failure during the sql task and
have included what I believe to be the relevant results of the call 'ant
-debug loadStoredProcedures 2>&1 | tee sql_debug.log'
Apache Ant version 1.7.0 compiled on December 13 2006
Buildfile: build.xml
Adding reference: ant.PropertyHelper
Detected Java version: 1.5 in: /usr/java/jdk1.5.0_14/jre
Detected OS: Linux
Finding class net.sf.antcontrib.logic.IfTask
Loaded from /opencoral/ext/ant/ant-contrib-0.6.jar
net/sf/antcontrib/logic/IfTask
.class
Class org.apache.tools.ant.taskdefs.condition.ConditionBase loaded from
parent lo
ader (parentFirst)
Class net.sf.antcontrib.logic.IfTask loaded from ant loader (parentFirst)
Finding class net.sf.antcontrib.logic.IfTask$ElseIf
Loaded from /opencoral/ext/ant/ant-contrib-0.6.jar
net/sf/antcontrib/logic/IfTask
$ElseIf.class
Class net.sf.antcontrib.logic.IfTask$ElseIf loaded from ant loader
(parentFirst)
+Datatype if net.sf.antcontrib.logic.IfTask
loadStoredProcedures:
Setting project property: this.user -> accmgr
[echo] Loading stored procedures from
/opencoral/build-rhel4/sql/storedProce
dures/accmgr.
Adding reference: this.fileset
fileset: Setup scanner in dir
/opencoral/build-rhel4/sql/storedProcedures/accmgr
with patternSet{ includes: [*.sql] excludes: [] }
[pathconvert] Set property new.files =
/opencoral/build-rhel4/sql/storedProcedure
s/accmgr/accounting_summary_source.sql:/opencoral/build-rhel4/sql/storedProcedure
s/accmgr/load_rates_source.sql:/opencoral/build-rhel4/sql/storedProcedures/accmgr
/raw_accounting_source.sql:/opencoral/build-rhel4/sql/storedProcedures/accmgr/usa
ge_summary_source.sql
Setting project property: new.files ->
/opencoral/build-rhel4/sql/storedProcedure
s/accmgr/accounting_summary_source.sql:/opencoral/build-rhel4/sql/storedProcedure
s/accmgr/load_rates_source.sql:/opencoral/build-rhel4/sql/storedProcedures/accmgr
/raw_accounting_source.sql:/opencoral/build-rhel4/sql/storedProcedures/accmgr/usa
ge_summary_source.sql
[echo] Property new.files is set to
/opencoral/build-rhel4/sql/storedProcedu
res/accmgr/accounting_summary_source.sql:/opencoral/build-rhel4/sql/storedProcedu
res/accmgr/load_rates_source.sql:/opencoral/build-rhel4/sql/storedProcedures/accm
gr/raw_accounting_source.sql:/opencoral/build-rhel4/sql/storedProcedures/accmgr/u
sage_summary_source.sql.
fileset: Setup scanner in dir
/opencoral/build-rhel4/sql/storedProcedures/accmgr
with patternSet{ includes: [*.sql] excludes: [] }
[antcall] Exiting /opencoral/build.xml.
BUILD FAILED
/opencoral/build.xml:1571: The following error occurred while executing
this line
:
/opencoral/build.xml:1594: Source file or resource collection,
transactions or sq
l statement must be set!
at
org.apache.tools.ant.ProjectHelper.addLocationToBuildException(Project
Helper.java:541)
at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:418)
at
org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:105)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j
ava:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
orImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java
:105)
at org.apache.tools.ant.Task.perform(Task.java:348)
at
org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:62)
at net.sf.antcontrib.logic.ForEach.executeSequential(Unknown Source)
at net.sf.antcontrib.logic.ForEach.execute(Unknown Source)
at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
orImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java
:105)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:357)
at org.apache.tools.ant.Target.performTasks(Target.java:385)
at
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
at org.apache.tools.ant.Project.executeTarget(Project.java:1298)
at
org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExec
utor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
at org.apache.tools.ant.Main.runBuild(Main.java:698)
at org.apache.tools.ant.Main.startAnt(Main.java:199)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
Caused by: /opencoral/build.xml:1594: Source file or resource
collection, transac
tions or sql statement must be set!
at org.apache.tools.ant.taskdefs.SQLExec.execute(SQLExec.java:390)
at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
orImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java
:105)
at org.apache.tools.ant.Task.perform(Task.java:348)
at
org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:62)
at net.sf.antcontrib.logic.IfTask.execute(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j
ava:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
orImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java
:105)
at org.apache.tools.ant.TaskAdapter.execute(TaskAdapter.java:134)
at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
orImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java
:105)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:357)
at org.apache.tools.ant.Target.performTasks(Target.java:385)
at
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
at
org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleC
heckExecutor.java:38)
at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:416)
... 26 more
--- Nested Exception ---
/opencoral/build.xml:1594: Source file or resource collection,
transactions or sq
l statement must be set!
at org.apache.tools.ant.taskdefs.SQLExec.execute(SQLExec.java:390)
at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
orImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java
:105)
at org.apache.tools.ant.Task.perform(Task.java:348)
at
org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:62)
at net.sf.antcontrib.logic.IfTask.execute(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j
ava:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
orImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java
:105)
at org.apache.tools.ant.TaskAdapter.execute(TaskAdapter.java:134)
at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
orImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java
:105)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:357)
at org.apache.tools.ant.Target.performTasks(Target.java:385)
at
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
at
org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleC
heckExecutor.java:38)
at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:416)
at
org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:105)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j
ava:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
orImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java
:105)
at org.apache.tools.ant.Task.perform(Task.java:348)
at
org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:62)
at net.sf.antcontrib.logic.ForEach.executeSequential(Unknown Source)
at net.sf.antcontrib.logic.ForEach.execute(Unknown Source)
at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
orImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java
:105)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:357)
at org.apache.tools.ant.Target.performTasks(Target.java:385)
at
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
at org.apache.tools.ant.Project.executeTarget(Project.java:1298)
at
org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExec
utor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
at org.apache.tools.ant.Main.runBuild(Main.java:698)
at org.apache.tools.ant.Main.startAnt(Main.java:199)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
Total time: 5 seconds
So, it looks, based on my pathcovert ${new.files} property that it
thinks that the fileset should contain 4 files. But, I still seem to be
generating an error when I try to load that fileset as a "refid" fileset.
Any insights or further tests .... or cleaner ways of testing for a
non-empty fileset .... would be greatly appreciated.
Thanks,
John
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]