Velocity
  1. Velocity
  2. VELOCITY-753

IntrospectionUtils.isMethodInvocationConvertible() returns true for NumberFormat.format(double) method with a Float.class argument

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.6.2
    • Fix Version/s: 1.7, 2.x
    • Component/s: Engine
    • Labels:
      None

      Description

      NumberFormat has both a format(double) and format(Object) method. When evaluated against a Float, IntrospectionUtils is returning true. This causes Method.getBestMatch() to throw an AmbigouusException.

      I have included a failing test case below to show this issue.

      Thanks,
      Tim

      import java.io.StringReader;
      import java.io.StringWriter;
      import java.text.NumberFormat;

      import junit.framework.TestCase;

      import org.apache.velocity.VelocityContext;
      import org.apache.velocity.app.Velocity;

      public class VelocityFormatTest extends TestCase {

      public void test_format_of_float() throws Exception {
      // verify format() outside of Velocity
      NumberFormat numberFormat = NumberFormat.getInstance();
      Float aFloat = new Float(5.23);
      assertEquals("5.23", numberFormat.format(aFloat));

      Velocity.init();
      VelocityContext context = new VelocityContext();
      context.put("numberFormatter", numberFormat);
      context.put("aFloat", aFloat);

      StringWriter sw = new StringWriter();
      StringReader sr = new StringReader(
      "float value is $

      {numberFormatter.format($aFloat)}

      ");
      Velocity.evaluate(context, sw, "name", sr);

      String expectedValue = "float value is 5.23";
      assertEquals(expectedValue, sw.toString());
      }

      }

        Activity

          People

          • Assignee:
            Unassigned
            Reporter:
            Tim Kuntz
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development