Author: gnodet
Date: Wed Mar 8 16:04:58 2017
New Revision: 1785993
URL: http://svn.apache.org/viewvc?rev=1785993&view=rev
Log:
[FELIX-5463] [gogo][jline] Make sure static methods are ignored when
considering functional interfaces
Modified:
felix/trunk/gogo/jline/src/main/java/org/apache/felix/gogo/jline/BaseConverters.java
Modified:
felix/trunk/gogo/jline/src/main/java/org/apache/felix/gogo/jline/BaseConverters.java
URL:
http://svn.apache.org/viewvc/felix/trunk/gogo/jline/src/main/java/org/apache/felix/gogo/jline/BaseConverters.java?rev=1785993&r1=1785992&r2=1785993&view=diff
==============================================================================
---
felix/trunk/gogo/jline/src/main/java/org/apache/felix/gogo/jline/BaseConverters.java
(original)
+++
felix/trunk/gogo/jline/src/main/java/org/apache/felix/gogo/jline/BaseConverters.java
Wed Mar 8 16:04:58 2017
@@ -27,6 +27,7 @@ import java.lang.invoke.MethodHandles;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
import java.lang.reflect.Proxy;
import java.util.Arrays;
import java.util.Collections;
@@ -106,7 +107,7 @@ public class BaseConverters implements C
}
int nb = 0;
for (Method method : clazz.getMethods()) {
- if (method.isDefault() || isObjectMethod(method)) {
+ if (method.isDefault() || isObjectMethod(method) ||
isStatic(method)) {
continue;
}
nb++;
@@ -114,6 +115,10 @@ public class BaseConverters implements C
return nb == 1;
}
+ public static boolean isStatic(Method method) {
+ return (method.getModifiers() & Modifier.STATIC) == Modifier.STATIC;
+ }
+
public static boolean isObjectMethod(Method method) {
switch (method.getName()) {
case "toString":