org.eclipse.xtext.util
Class PolymorphicDispatcher<RT>

java.lang.Object
  extended by org.eclipse.xtext.util.PolymorphicDispatcher<RT>

public class PolymorphicDispatcher<RT>
extends java.lang.Object

Author:
Sven Efftinge - Initial contribution and API

Nested Class Summary
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
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)
           
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)
           
 
Method Summary
protected  int compare(PolymorphicDispatcher.MethodDesc o1, PolymorphicDispatcher.MethodDesc o2)
           
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)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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)

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:

createMethodDesc

protected PolymorphicDispatcher.MethodDesc createMethodDesc(java.lang.Object target,
                                                            java.lang.reflect.Method method)