You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ant.apache.org by Harry_ <ha...@gmail.com> on 2009/11/30 11:49:50 UTC

ForTask throwing exception for same value for begin and end

Hi,

I am using ForTask for looping. The end attribute value comes from property.
I am using it like 

 <property name="JVMInstances" value="2"/>

 <for begin="1" end="${JVMInstances}"  param="JVMID"> 

The above code works fine.

But when I make the value of JVMInstances as 1, then exception comes during
the execution of this Ant file.

Can Any one tell me if it is a known defect that for loop does not work with
same value of begin and end attribute. I am using
ise.antelope.tasks.ForTask.


If this is a defect can anyone tell me how to write a function block in ant.
This will help me in not writing redundant lines in build file by testing
above condition in if Block.
-- 
View this message in context: http://old.nabble.com/ForTask-throwing-exception-for-same-value-for-begin-and-end-tp26572661p26572661.html
Sent from the Ant - Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org


Re: ForTask throwing exception for same value for begin and end

Posted by Harry_ <ha...@gmail.com>.
Thanks a ton for your reply Peter.

I did the following in the ForTask code to fix it:

            if (step == 0) {
                throw new BuildException("step cannot be 0");
            } else if (iEnd > begin && step < 0) {
                throw new BuildException("end > begin, step needs to be >
0");
            } else if (iEnd < begin && step > 0) {   //Changed <= condition
to <
                throw new BuildException("end <= begin, step needs to be <
0");
            }

Thanks and Regards


Peter Reilly-2 wrote:
> 
> Yes this is a bug in the ant-contrib 's for task
> (as usual I have forgot my password..)
> 
> work-around: use step="-1" if begin and end are the
> same, and ensure that end >= begin.
> 
> work-around-2: patch ant-conrib:
> svn co
> https://ant-contrib.svn.sourceforge.net/svnroot/ant-contrib/ant-contrib/trunk
> ant-contrib
> 
> Index: src/main/java/net/sf/antcontrib/logic/ForTask.java
> ===================================================================
> --- src/main/java/net/sf/antcontrib/logic/ForTask.java  (revision 177)
> +++ src/main/java/net/sf/antcontrib/logic/ForTask.java  (working copy)
> @@ -237,7 +237,7 @@
>                  throw new BuildException("step cannot be 0");
>              } else if (iEnd > begin && step < 0) {
>                  throw new BuildException("end > begin, step needs to be >
> 0");
> -            } else if (iEnd <= begin && step > 0) {
> +            } else if (iEnd < begin && step > 0) {
>                  throw new BuildException("end <= begin, step needs to be
> < 0");
>              }
>          }
> 
> Peter
> 
> On Mon, Nov 30, 2009 at 11:44 AM,  <Ja...@rzf.fin-nrw.de> wrote:
>> <project xmlns:ac="antlib:net.sf.antcontrib">
>>    <ac:for param="i" begin="0" end="1">
>>      <sequential>
>>        <echo>i is @{i}</echo>
>>      </sequential>
>>    </ac:for>
>> </project>
>>
>> With begin=end=1 you will get the error message
>>  build.xml:2: end <= begin, step needs to be < 0
>>
>> So I see two possibilities:
>> 1) the exceptional 1-jvm-case
>>   <macrodef name="doit">
>>     <attribute name="param"/>
>>   ...
>>   <ac:if>
>>     <equals arg1="${end}" "1"/>
>>     <ac:then> <doit param="1"/> </>
>>     <ac:else>
>>       <ac:for ...> <doit param="@{i}"/>
>>
>> 2) NullObject
>>   Maybe your <sequential> implementation could deal with the value '0'
>> (and do nothing)
>>
>>
>> Jan
>>
>>
>>> -----Ursprüngliche Nachricht-----
>>> Von: Harry_ [mailto:harjitworks@gmail.com]
>>> Gesendet: Montag, 30. November 2009 11:50
>>> An: user@ant.apache.org
>>> Betreff: ForTask throwing exception for same value for begin and end
>>>
>>>
>>> Hi,
>>>
>>> I am using ForTask for looping. The end attribute value comes
>>> from property.
>>> I am using it like
>>>
>>>  <property name="JVMInstances" value="2"/>
>>>
>>>  <for begin="1" end="${JVMInstances}"  param="JVMID">
>>>
>>> The above code works fine.
>>>
>>> But when I make the value of JVMInstances as 1, then
>>> exception comes during
>>> the execution of this Ant file.
>>>
>>> Can Any one tell me if it is a known defect that for loop
>>> does not work with
>>> same value of begin and end attribute. I am using
>>> ise.antelope.tasks.ForTask.
>>>
>>>
>>> If this is a defect can anyone tell me how to write a
>>> function block in ant.
>>> This will help me in not writing redundant lines in build
>>> file by testing
>>> above condition in if Block.
>>>
>>> Regards
>>> --
>>> View this message in context:
>>> http://old.nabble.com/ForTask-throwing-exception-for-same-valu
>> e-for-begin-and-end-tp26572661p26572661.html
>>> Sent from the Ant - Users mailing list archive at Nabble.com.
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
>>> For additional commands, e-mail: user-help@ant.apache.org
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
>> For additional commands, e-mail: user-help@ant.apache.org
>>
>>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> For additional commands, e-mail: user-help@ant.apache.org
> 
> 
> 

-- 
View this message in context: http://old.nabble.com/ForTask-throwing-exception-for-same-value-for-begin-and-end-tp26572661p26591896.html
Sent from the Ant - Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org


Re: ForTask throwing exception for same value for begin and end

Posted by Peter Reilly <pe...@gmail.com>.
Yes this is a bug in the ant-contrib 's for task
(as usual I have forgot my password..)

work-around: use step="-1" if begin and end are the
same, and ensure that end >= begin.

work-around-2: patch ant-conrib:
svn co https://ant-contrib.svn.sourceforge.net/svnroot/ant-contrib/ant-contrib/trunk
ant-contrib

Index: src/main/java/net/sf/antcontrib/logic/ForTask.java
===================================================================
--- src/main/java/net/sf/antcontrib/logic/ForTask.java  (revision 177)
+++ src/main/java/net/sf/antcontrib/logic/ForTask.java  (working copy)
@@ -237,7 +237,7 @@
                 throw new BuildException("step cannot be 0");
             } else if (iEnd > begin && step < 0) {
                 throw new BuildException("end > begin, step needs to be > 0");
-            } else if (iEnd <= begin && step > 0) {
+            } else if (iEnd < begin && step > 0) {
                 throw new BuildException("end <= begin, step needs to be < 0");
             }
         }

Peter

On Mon, Nov 30, 2009 at 11:44 AM,  <Ja...@rzf.fin-nrw.de> wrote:
> <project xmlns:ac="antlib:net.sf.antcontrib">
>    <ac:for param="i" begin="0" end="1">
>      <sequential>
>        <echo>i is @{i}</echo>
>      </sequential>
>    </ac:for>
> </project>
>
> With begin=end=1 you will get the error message
>  build.xml:2: end <= begin, step needs to be < 0
>
> So I see two possibilities:
> 1) the exceptional 1-jvm-case
>   <macrodef name="doit">
>     <attribute name="param"/>
>   ...
>   <ac:if>
>     <equals arg1="${end}" "1"/>
>     <ac:then> <doit param="1"/> </>
>     <ac:else>
>       <ac:for ...> <doit param="@{i}"/>
>
> 2) NullObject
>   Maybe your <sequential> implementation could deal with the value '0' (and do nothing)
>
>
> Jan
>
>
>> -----Ursprüngliche Nachricht-----
>> Von: Harry_ [mailto:harjitworks@gmail.com]
>> Gesendet: Montag, 30. November 2009 11:50
>> An: user@ant.apache.org
>> Betreff: ForTask throwing exception for same value for begin and end
>>
>>
>> Hi,
>>
>> I am using ForTask for looping. The end attribute value comes
>> from property.
>> I am using it like
>>
>>  <property name="JVMInstances" value="2"/>
>>
>>  <for begin="1" end="${JVMInstances}"  param="JVMID">
>>
>> The above code works fine.
>>
>> But when I make the value of JVMInstances as 1, then
>> exception comes during
>> the execution of this Ant file.
>>
>> Can Any one tell me if it is a known defect that for loop
>> does not work with
>> same value of begin and end attribute. I am using
>> ise.antelope.tasks.ForTask.
>>
>>
>> If this is a defect can anyone tell me how to write a
>> function block in ant.
>> This will help me in not writing redundant lines in build
>> file by testing
>> above condition in if Block.
>>
>> Regards
>> --
>> View this message in context:
>> http://old.nabble.com/ForTask-throwing-exception-for-same-valu
> e-for-begin-and-end-tp26572661p26572661.html
>> Sent from the Ant - Users mailing list archive at Nabble.com.
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
>> For additional commands, e-mail: user-help@ant.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> For additional commands, e-mail: user-help@ant.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org


AW: ForTask throwing exception for same value for begin and end

Posted by Ja...@rzf.fin-nrw.de.
<project xmlns:ac="antlib:net.sf.antcontrib">
    <ac:for param="i" begin="0" end="1">
      <sequential>
        <echo>i is @{i}</echo>
      </sequential>
    </ac:for>
</project>

With begin=end=1 you will get the error message
  build.xml:2: end <= begin, step needs to be < 0 

So I see two possibilities:
1) the exceptional 1-jvm-case
   <macrodef name="doit">
     <attribute name="param"/>
   ...
   <ac:if>
     <equals arg1="${end}" "1"/>
     <ac:then> <doit param="1"/> </>
     <ac:else>
       <ac:for ...> <doit param="@{i}"/>

2) NullObject
   Maybe your <sequential> implementation could deal with the value '0' (and do nothing)


Jan


> -----Ursprüngliche Nachricht-----
> Von: Harry_ [mailto:harjitworks@gmail.com] 
> Gesendet: Montag, 30. November 2009 11:50
> An: user@ant.apache.org
> Betreff: ForTask throwing exception for same value for begin and end
> 
> 
> Hi,
> 
> I am using ForTask for looping. The end attribute value comes 
> from property.
> I am using it like 
> 
>  <property name="JVMInstances" value="2"/>
> 
>  <for begin="1" end="${JVMInstances}"  param="JVMID"> 
> 
> The above code works fine.
> 
> But when I make the value of JVMInstances as 1, then 
> exception comes during
> the execution of this Ant file.
> 
> Can Any one tell me if it is a known defect that for loop 
> does not work with
> same value of begin and end attribute. I am using
> ise.antelope.tasks.ForTask.
> 
> 
> If this is a defect can anyone tell me how to write a 
> function block in ant.
> This will help me in not writing redundant lines in build 
> file by testing
> above condition in if Block.
> 
> Regards
> -- 
> View this message in context: 
> http://old.nabble.com/ForTask-throwing-exception-for-same-valu
e-for-begin-and-end-tp26572661p26572661.html
> Sent from the Ant - Users mailing list archive at Nabble.com.
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> For additional commands, e-mail: user-help@ant.apache.org
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org