Package org.eclipse.xtext.util
Class PolymorphicDispatcher<RT>
- java.lang.Object
-
- org.eclipse.xtext.util.PolymorphicDispatcher<RT>
-
public class PolymorphicDispatcher<RT> extends java.lang.Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
PolymorphicDispatcher.DefaultErrorHandler<RT>
static interface
PolymorphicDispatcher.ErrorHandler<P>
protected class
PolymorphicDispatcher.MethodDesc
static class
PolymorphicDispatcher.MethodNameFilter
static class
PolymorphicDispatcher.NullErrorHandler<RT>
static class
PolymorphicDispatcher.Predicates
static class
PolymorphicDispatcher.WarningErrorHandler<RT>
-
Constructor Summary
Constructors Constructor Description PolymorphicDispatcher(java.lang.String methodName, int minParams, int maxParams, java.util.List<? extends java.lang.Object> targets)
PolymorphicDispatcher(java.lang.String methodName, int minParams, int maxParams, java.util.List<? extends java.lang.Object> targets, PolymorphicDispatcher.ErrorHandler<RT> handler)
PolymorphicDispatcher(java.lang.String methodName, java.util.List<? extends java.lang.Object> targets)
PolymorphicDispatcher(java.util.List<? extends java.lang.Object> targets, com.google.common.base.Predicate<java.lang.reflect.Method> methodFilter)
PolymorphicDispatcher(java.util.List<? extends java.lang.Object> targets, com.google.common.base.Predicate<java.lang.reflect.Method> methodFilter, PolymorphicDispatcher.ErrorHandler<RT> handler)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected int
compare(PolymorphicDispatcher.MethodDesc o1, PolymorphicDispatcher.MethodDesc o2)
returns > 0 when o1 is more specific than o2, returns == 0 when o1 and o2 are equal or unrelated, returns < 0 when o2 is more specific than o1,static <T> PolymorphicDispatcher<T>
createForSingleTarget(com.google.common.base.Predicate<java.lang.reflect.Method> methodFilter, java.lang.Object singleTarget)
static <T> PolymorphicDispatcher<T>
createForSingleTarget(java.lang.String methodName, int min, int max, java.lang.Object singleTarget)
static <T> PolymorphicDispatcher<T>
createForSingleTarget(java.lang.String methodName, java.lang.Object singleTarget)
static <T> PolymorphicDispatcher<T>
createForVarTarget(java.lang.String methodName, java.lang.Object... targets)
protected PolymorphicDispatcher.MethodDesc
createMethodDesc(java.lang.Object target, java.lang.reflect.Method method)
protected java.lang.Class<?>
getDefaultClass(int paramIndex)
protected RT
handleAmbigousMethods(java.util.List<PolymorphicDispatcher.MethodDesc> result, java.lang.Object... params)
protected RT
handleNoSuchMethod(java.lang.Object... params)
RT
invoke(java.lang.Object... params)
-
-
-
Constructor Detail
-
PolymorphicDispatcher
public PolymorphicDispatcher(java.lang.String methodName, java.util.List<? extends java.lang.Object> targets)
-
PolymorphicDispatcher
public PolymorphicDispatcher(java.lang.String methodName, int minParams, int maxParams, java.util.List<? extends java.lang.Object> targets)
-
PolymorphicDispatcher
public PolymorphicDispatcher(java.lang.String methodName, int minParams, int maxParams, java.util.List<? extends java.lang.Object> targets, PolymorphicDispatcher.ErrorHandler<RT> handler)
-
PolymorphicDispatcher
public PolymorphicDispatcher(java.util.List<? extends java.lang.Object> targets, com.google.common.base.Predicate<java.lang.reflect.Method> methodFilter)
-
PolymorphicDispatcher
public PolymorphicDispatcher(java.util.List<? extends java.lang.Object> targets, com.google.common.base.Predicate<java.lang.reflect.Method> methodFilter, PolymorphicDispatcher.ErrorHandler<RT> handler)
-
-
Method Detail
-
createForSingleTarget
public static <T> PolymorphicDispatcher<T> createForSingleTarget(java.lang.String methodName, java.lang.Object singleTarget)
-
createForSingleTarget
public static <T> PolymorphicDispatcher<T> createForSingleTarget(java.lang.String methodName, int min, int max, java.lang.Object singleTarget)
-
createForSingleTarget
public static <T> PolymorphicDispatcher<T> createForSingleTarget(com.google.common.base.Predicate<java.lang.reflect.Method> methodFilter, java.lang.Object singleTarget)
-
createForVarTarget
public static <T> PolymorphicDispatcher<T> createForVarTarget(java.lang.String methodName, java.lang.Object... targets)
-
compare
protected int compare(PolymorphicDispatcher.MethodDesc o1, PolymorphicDispatcher.MethodDesc o2)
returns > 0 when o1 is more specific than o2, returns == 0 when o1 and o2 are equal or unrelated, returns < 0 when o2 is more specific than o1,
-
invoke
public RT invoke(java.lang.Object... params)
-
handleNoSuchMethod
protected RT handleNoSuchMethod(java.lang.Object... params)
-
handleAmbigousMethods
protected RT handleAmbigousMethods(java.util.List<PolymorphicDispatcher.MethodDesc> result, java.lang.Object... params)
-
getDefaultClass
protected java.lang.Class<?> getDefaultClass(int paramIndex)
- Returns:
Void.class
-
createMethodDesc
protected PolymorphicDispatcher.MethodDesc createMethodDesc(java.lang.Object target, java.lang.reflect.Method method)
-
-