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 classPolymorphicDispatcher.DefaultErrorHandler<RT>static interfacePolymorphicDispatcher.ErrorHandler<P>protected classPolymorphicDispatcher.MethodDescstatic classPolymorphicDispatcher.MethodNameFilterstatic classPolymorphicDispatcher.NullErrorHandler<RT>static classPolymorphicDispatcher.Predicatesstatic classPolymorphicDispatcher.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 intcompare(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.MethodDesccreateMethodDesc(java.lang.Object target, java.lang.reflect.Method method)protected java.lang.Class<?>getDefaultClass(int paramIndex)protected RThandleAmbigousMethods(java.util.List<PolymorphicDispatcher.MethodDesc> result, java.lang.Object... params)protected RThandleNoSuchMethod(java.lang.Object... params)RTinvoke(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)
-
-