org.apache.camel.util.component
Class ApiMethodHelper<T extends Enum<T> & ApiMethod>

java.lang.Object
  extended by org.apache.camel.util.component.ApiMethodHelper<T>

public final class ApiMethodHelper<T extends Enum<T> & ApiMethod>
extends Object

Helper class for working with ApiMethod.


Nested Class Summary
static class ApiMethodHelper.MatchType
           
 
Constructor Summary
ApiMethodHelper(Class<T> apiMethodEnum, Map<String,String> aliases, List<String> nullableArguments)
          Create a helper to work with a ApiMethod, using optional method aliases.
 
Method Summary
 Map<String,Class<?>> allArguments()
          Returns argument types and names used by all methods.
 List<ApiMethod> filterMethods(List<? extends ApiMethod> methods, ApiMethodHelper.MatchType matchType, String... argNames)
          Filters a list of methods to those that take the given set of arguments.
 Map<String,Set<String>> getAliases()
          Returns alias map.
 List<Object> getArguments(String name)
          Gets argument types and names for all overloaded methods and aliases with the given name.
 List<ApiMethod> getCandidateMethods(String name, String... argNames)
          Gets methods that match the given name and arguments.

Note that the args list is a required subset of arguments for returned methods.

static ApiMethod getHighestPriorityMethod(List<? extends ApiMethod> filteredMethods)
           
 Set<String> getMissingProperties(String methodName, Set<String> argNames)
          Get missing properties.
 List<String> getNullableArguments()
          Returns argument names that can be set to null if not specified.
 Class<?> getType(String argName)
          Get the type for the given argument name.
static Object invokeMethod(Object proxy, ApiMethod method, Map<String,Object> properties)
          Invokes given method with argument values from given properties.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ApiMethodHelper

public ApiMethodHelper(Class<T> apiMethodEnum,
                       Map<String,String> aliases,
                       List<String> nullableArguments)
Create a helper to work with a ApiMethod, using optional method aliases.

Parameters:
apiMethodEnum - ApiMethod enumeration class
aliases - Aliases mapped to actual method names
nullableArguments - names of arguments that default to null value
Method Detail

getCandidateMethods

public List<ApiMethod> getCandidateMethods(String name,
                                           String... argNames)
Gets methods that match the given name and arguments.

Note that the args list is a required subset of arguments for returned methods.

Parameters:
name - case sensitive method name or alias to lookup
argNames - unordered required argument names
Returns:
non-null unmodifiable list of methods that take all of the given arguments, empty if there is no match

filterMethods

public List<ApiMethod> filterMethods(List<? extends ApiMethod> methods,
                                     ApiMethodHelper.MatchType matchType,
                                     String... argNames)
Filters a list of methods to those that take the given set of arguments.

Parameters:
methods - list of methods to filter
matchType - whether the arguments are an exact match, a subset or a super set of method args
argNames - argument names to filter the list
Returns:
methods with arguments that satisfy the match type.

For SUPER_SET match, if methods with exact match are found, methods that take a subset are ignored


getArguments

public List<Object> getArguments(String name)
                          throws IllegalArgumentException
Gets argument types and names for all overloaded methods and aliases with the given name.

Parameters:
name - method name, either an exact name or an alias, exact matches are checked first
Returns:
list of arguments of the form Class type1, String name1, Class type2, String name2,...
Throws:
IllegalArgumentException

getMissingProperties

public Set<String> getMissingProperties(String methodName,
                                        Set<String> argNames)
Get missing properties.

Parameters:
methodName - method name
argNames - available arguments
Returns:
Set of missing argument names

getAliases

public Map<String,Set<String>> getAliases()
Returns alias map.

Returns:
alias names mapped to method names.

allArguments

public Map<String,Class<?>> allArguments()
Returns argument types and names used by all methods.

Returns:
map with argument names as keys, and types as values

getNullableArguments

public List<String> getNullableArguments()
Returns argument names that can be set to null if not specified.

Returns:
list of argument names

getType

public Class<?> getType(String argName)
                 throws IllegalArgumentException
Get the type for the given argument name.

Parameters:
argName - argument name
Returns:
argument type
Throws:
IllegalArgumentException

getHighestPriorityMethod

public static ApiMethod getHighestPriorityMethod(List<? extends ApiMethod> filteredMethods)

invokeMethod

public static Object invokeMethod(Object proxy,
                                  ApiMethod method,
                                  Map<String,Object> properties)
                           throws RuntimeCamelException
Invokes given method with argument values from given properties.

Parameters:
proxy - Proxy object for invoke
method - method to invoke
properties - Map of arguments
Returns:
result of method invocation
Throws:
RuntimeCamelException - on errors


Apache Camel