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]

Reply via email to