aboutsummaryrefslogtreecommitdiff
path: root/velocity-engine-core
diff options
context:
space:
mode:
Diffstat (limited to 'velocity-engine-core')
-rw-r--r--velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTMethod.java2
-rw-r--r--velocity-engine-core/src/main/java/org/apache/velocity/util/introspection/MethodMap.java15
2 files changed, 15 insertions, 2 deletions
diff --git a/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTMethod.java b/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTMethod.java
index 3d38bcf2..7e912e6e 100644
--- a/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTMethod.java
+++ b/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTMethod.java
@@ -183,7 +183,7 @@ public class ASTMethod extends SimpleNode
if (i < params.length - 1)
plist.append(", ");
}
- log.debug("Object '{}' does not contain method {}({}) at {}[line {}, column {}]", o.getClass().getName(), methodName, plist, getTemplateName(), getLine(), getColumn());
+ log.debug("Object '{}' does not contain method {}({}) (or several ambiguous methods) at {}[line {}, column {}]", o.getClass().getName(), methodName, plist, getTemplateName(), getLine(), getColumn());
}
/*
diff --git a/velocity-engine-core/src/main/java/org/apache/velocity/util/introspection/MethodMap.java b/velocity-engine-core/src/main/java/org/apache/velocity/util/introspection/MethodMap.java
index f9f1e000..51bac9bb 100644
--- a/velocity-engine-core/src/main/java/org/apache/velocity/util/introspection/MethodMap.java
+++ b/velocity-engine-core/src/main/java/org/apache/velocity/util/introspection/MethodMap.java
@@ -284,10 +284,23 @@ public class MethodMap
case MORE_SPECIFIC:
it.remove();
break;
- case EQUIVALENT:
case INCOMPARABLE:
+ /* Java compiler favors non-vararg methods. Let's do the same. */
+ if (match.varargs != best.varargs)
+ {
+ if (match.varargs)
+ {
+ keepMethod = false;
+ }
+ else if (best.varargs)
+ {
+ it.remove();
+ }
+ }
/* otherwise it's an equivalent match */
break;
+ case EQUIVALENT:
+ break;
}
}
}