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

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

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.6.2
    • Fix Version/s: 1.7, 2.0
    • 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());
      }

      }

        Attachments

          Activity

            People

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

              Dates

              • Created:
                Updated:
                Resolved: