Uploaded image for project: 'Velocity'
  1. Velocity
  2. VELOCITY-948

Number ranges created as ASTIntegerRange$IntegerRange in 2.1 rather than java.util.ArrayList

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 2.1
    • 2.4
    • Engine
    • None

    Description

      Hello!

      I am having issues upgrading from 2.0 to 2.1 with existing templates. The minimal below example illustrates the change in behaviour:

      <html>
      <body>
      
      #set ($example= [0..50]) 
      ${example.class.name}   
      #set ($example[10] = 500)
      
      </body>
      </html>
      

       

      With 2.0:

      this prints:

      <html><body>java.util.ArrayList</body></html>

      and throws no errors.

       

      With 2.1:

      this prints:

      <html><body>org.apache.velocity.runtime.parser.node.ASTIntegerRange$IntegerRange</body></html>

      and throws an UnsupportedMethodException at the set line.

       

      I have tried all kinds of config variables from the docs in a unit test. 

      The 2.1 documentation states:

      • The VTL RangeOperator [ 1..10 ] and ObjectArray ["a","b"] are java.util.ArrayList objects when placed in the context or passed to methods. Therefore, your methods that are designed to accept arrays created in the template should be written with this in mind.

      https://velocity.apache.org/engine/2.1/developer-guide.html 

       

       

      Attachments

        Activity

          People

            Unassigned Unassigned
            tomw1994991 Tom White
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: